appJar状态栏无法实时更新

时间:2018-07-12 20:23:46

标签: python user-interface

我已经建立了一个简单的appJar UI,其中包含一个“执行”按钮,该按钮调用一个函数,该函数包含需要花一分钟时间才能运行的代码。我已经将gui()变量app注入到此函数中。

有四个主要步骤,在每个主要步骤之后,我希望状态栏进行更新以反映一个步骤已完成。但是,趋向于发生的是,随着功能代码的运行,GUI变得无响应,并且直到代码完成执行后,状态栏的所有更改才会立即显示。

我的问题是我应该如何处理UI,以便实时更新状态栏?

2 个答案:

答案 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)