请教个关于 Tkinter 的问题

2016-05-24 21:32:44 +08:00
 CHEATBEATER

请教,如果我想把打印在控制台中的信息动态的打到 Text 里,应该怎么做? 现在只能等到控制台所有信息打完才能在 Text 中显示 谢谢大家

2837 次点击
所在节点    Python
5 条回复
Dwayne
2016-05-24 23:46:38 +08:00
xx.insert(END, 'xxx')
xx.update()
试试

AC 姬是什么鬼..
LedChang
2016-05-25 08:39:19 +08:00
。。。自动 A 题器吗?
zjqzxc
2016-05-25 08:55:15 +08:00
直觉觉得这事得多线程解决了。。
但是描述太简单了,不好判断。。
leavic
2016-05-25 10:47:57 +08:00
首先,楼主你现在肯定是单线程编程。
在你打印数据的时候,线程 CPU 被打印函数占据, GUI 失去了对 CPU 的控制权,所以 GUI 不能更新内容。
你只能等到打印函数完成交出 CPU 之后, GUI 才有 CPU 可用,才能够更新数据,然后你才能看到。

所以,这个问题一定要通过多线程来解决,既 GUI 一个单独的线程,打印函数一个单独的线程,二者间通过信号量交互数据。

Tkinter 不是 thread safe 的,做多线程的体验很不好,建议早日改投 PyQT 。
CHEATBEATER
2016-05-25 12:08:01 +08:00
@Dwayne update 也不行,还是要等控制台全部输出完状态信息才能在 Text 中显示
@LedChang 是的,自动水题的爬虫
@zjqzxc 应该是要用多线程了
@leavic 第一次写 GUI 程序,没考虑到线程的问题,用 Tkinter 也是感觉这个好像很简单易懂,十分感谢详细的回答
谢谢大家的帮助

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

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

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

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

© 2021 V2EX