PyQt新手问题。关于如何在textEdit控件里面,显示及时刷新的信息?

2013-01-14 16:14:52 +08:00
 manoon
还是说,这个控件不适合放这个信息?
我写了一个循环。每个五秒就改变一下textEdit的内容。
但是失败了。textEdit只显示最后一次的内容。

------------第一次玩python的GUI。不太了解,这种机制要怎么实现。
12471 次点击
所在节点    问与答
9 条回复
lookhi
2013-01-14 16:19:43 +08:00
为什么有这种需求?
kran
2013-01-14 16:23:33 +08:00
和web一个意思啊
先读再写啊
anyone
2013-01-14 17:18:54 +08:00
messages = list()
messages.append( newMessage )
textEdit.setText( '\n'.join(messages) )

或许这是你想要的?
Archangel_SDY
2013-01-14 17:23:57 +08:00
看一下你的循环有没有阻塞UI线程.
manoon
2013-01-14 17:28:19 +08:00
@anyone


大概就是这个意思。这段代码,我也有写出来。但没有按照我的意愿执行~~~
def showMsg():
--for i in range(1,10):
----newMessage="new message"+str(i)
----messages = list()
----messages.append( newMessage )
----textEdit.setText( '\n'.join(messages) )
----time.sleep(5)

mainwindow.showMsg()
manoon
2013-01-14 17:29:20 +08:00
@Archangel_SDY
说到点上了。
现在的情况,大概就是“阻塞”的意思~~~

循环结束后,才显示UI。
我要实现的是,一边显示UI,一边进行循环。

请指点~~谢谢。
thedevil5032
2013-01-14 17:41:56 +08:00
anyone is me.. OOPS...
@manoon 你的做法有问题, 如果你需要同步的 UI 显示和这样的操作, 就不能用 sleep.

1. 你有什么其他操作能激活这个的, 设置一个 信号和槽的对应关系.
1.1 或者, 你可以写这样一对信号和槽, 参考我的一个渣作.
https://github.com/thedevil7/timer
Archangel_SDY
2013-01-14 17:44:32 +08:00
@manoon

你应该把耗时长的操作放到另一个线程里, 如果只是定时器的话, 可以用QTimer:
http://doc.qt.digia.com/qt/qtimer.html
manoon
2013-01-14 19:57:48 +08:00
@Archangel_SDY
@thedevil5032

谢谢,谢谢。。。看到你们的回复,我基本上就有方向解决了。-------------其实,我翻看的和我需求功能类似的源码。大概也是用到了QTIMER这个东西~~~

写完了,我再放到github上面去,让大家再帮忙指导指导。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/57543

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX