我的Tkinter GUI太...静态?

5 投票
2 回答
521 浏览
提问于 2025-04-17 03:51

我用Tkinter做了一个图形界面,用来开始测量和分析的过程,基本上就是点击一个按钮就能启动。因为这些测量可能需要一些时间,所以我想加一个进度条,就是这个:

http://tkinter.unpythonic.net/wiki/ProgressMeter

但是当我启动这个过程时,我的整个Tkinter窗口就变得一团糟,直到测量完成后才会重新加载,进度条也直接跳到100%。这并不是我想要的效果。

这是怎么回事呢?我对编程还很陌生,所以可能没有所有的工具。我是不是需要引入一个单独的线程之类的东西,这样测量和Tkinter的主循环(这是不是就是主循环?)才能同时运行?如果是的话,我该怎么做呢?

2 个回答

0

每次你更新进度条的时候,都要调用 widget.update() 或者 root_window.update()

2

制作一个进度条(这些是我处理一个67MB文件时的代码片段。)

progress = ttk.Progressbar(bottommenuframe, orient=HORIZONTAL, length=100, maximum=190073,     mode='determinate')
progress.pack(side=RIGHT)

progress.start() ## this starts the progressbar

然后在你分析的时候:

def analysisfunction():
    progress.step(1) 
    ##do some analysis
    root.after(0, analysisFunction)

    if job == complete:
        stop

就像我说的,这个方法可以和我的67MB文件以及tkinter一起使用。希望这能帮到你一点 :)

撰写回答