llsl 发表于 2020-4-20 20:17:06

请教一个问题,关于tkinter的

本帖最后由 llsl 于 2020-4-20 20:19 编辑

我想在一个循环里不断更改一个label的内容,并每次都让他显示出来,
但是循环执行很快,只能看到最后的结果,
于是我想用time.sleep在每次循环结束时停止1秒,但是还是不显示,程序会卡住,
请问一下,有没有什么办法解决这个问题呢?
还有就是要自动地显示,不用人为干预

qiuyouzhi 发表于 2020-4-20 20:18:02

"卡住"是什么意思?
是程序停止了1秒然后才运行?

ba21 发表于 2020-4-20 20:20:04

卡是必须的。显示最后结果也是必须的。

一个进程一个线程执行肯定是顺序的,执行完代码1, 才能代码2。

一句话,要实现你的功能。   多线程

llsl 发表于 2020-4-20 20:20:43

qiuyouzhi 发表于 2020-4-20 20:18
"卡住"是什么意思?
是程序停止了1秒然后才运行?

不是,是中途不显示内容,卡了一会之后正常,并且只显示最后一次更改的label内容

qiuyouzhi 发表于 2020-4-20 20:21:31

llsl 发表于 2020-4-20 20:20
不是,是中途不显示内容,卡了一会之后正常,并且只显示最后一次更改的label内容

那你把那个睡眠的秒数改成0.1

llsl 发表于 2020-4-20 20:22:37

ba21 发表于 2020-4-20 20:20
卡是必须的。显示最后结果也是必须的。

一个进程一个线程执行肯定是顺序的,执行完代码1, 才能代码2。
...

有没有相关的帖子,对于多线程目前还不太熟悉

ba21 发表于 2020-4-20 20:23:57

llsl 发表于 2020-4-20 20:22
有没有相关的帖子,对于多线程目前还不太熟悉

python 多线程
python 多进程
百度找。先从第1个开始吧

llsl 发表于 2020-4-20 20:26:44

ba21 发表于 2020-4-20 20:23
python 多线程
python 多进程
百度找。先从第1个开始吧

好的多谢

hrp 发表于 2020-4-20 20:58:38

用多线程吧,用一个子线程专门负责刷新label的文本,而主线程不必等待子线程执行结束,这样整个程序就不会在sleep的时候卡住了

NZND 发表于 2020-4-20 22:08:41

楼主,问题解决了吗,我也遇到同样的问题了,我尝试了一下,多线程貌似不好使。

snaker 发表于 2020-4-21 10:53:19

刷新label的文本后加一句试试
#window=Tk()
window.update()

llsl 发表于 2020-4-24 11:53:27

NZND 发表于 2020-4-20 22:08
楼主,问题解决了吗,我也遇到同样的问题了,我尝试了一下,多线程貌似不好使。

我加了句label.update()后可以显示了
页: [1]
查看完整版本: 请教一个问题,关于tkinter的