我已经建立了一个简单的appJar UI,其中包含一个“执行”按钮,该按钮调用一个函数,该函数包含需要花一分钟时间才能运行的代码。我已经将gui()
变量app
注入到此函数中。
有四个主要步骤,在每个主要步骤之后,我希望状态栏进行更新以反映一个步骤已完成。但是,趋向于发生的是,随着功能代码的运行,GUI变得无响应,并且直到代码完成执行后,状态栏的所有更改才会立即显示。
我的问题是我应该如何处理UI,以便实时更新状态栏?
答案 0 :(得分:1)
appJar只是标准库中python tkinter模块的包装。
代码正在运行时,ui并未运行,因此它没有响应。如果您希望ui保持责任,则必须不时将控制权从代码返回给ui库。
这可以通过在代码中调用gui.topLevel.update()
来完成,或者使用异步编程并让主异步循环调用它,或者通过使用线程来完成。
其中哪一个最好,取决于您的程序在做什么。
答案 1 :(得分:0)
appJar还内置了对线程的支持:http://appjar.info/pythonThreads/
您可以在线程中调用花费很长时间的函数:app.thread(myFunction, param1, param2)
而且,如果要获取线程来更新GUI,则需要使用更新队列:app.queueFunction(app.setMeter, "myMeter", 50)