appJar python:按下按钮动作

时间:2017-09-17 15:27:19

标签: python python-3.x user-interface button widget

我正在尝试使用 python3 获得 appJar 的实际操作体验,以便进行GUI编程。我正在尝试添加按下按钮时要执行的操作。它运作正常但结尾却很奇怪。

部分代码如下。功能"按下"按下按钮时会被调用。它工作正常。但是,当计数达到0时,不会按下数字0(尽管根据代码,数字0应该打印在名为" lb1")的标签上。 当按下按钮并且count变量= 1时,count变量应该减1,然后标签文本应该用新的计数值更新。然后,它检查计数器是否= 0,如果为真,则退出代码。 现在,在使用新值更新标签之前,表单将被终止。通过一些故障排除,我发现标签值仅在表单终止时更新,尽管已经执行了更新它的代码行。

任何人都能对此有所了解吗?

from appJar import gui
count=10
def pressed(btnName):
    global count
    count-=1
    win.setLabel("lb1","Count= "+ str(count))
    if count==0:
        win.stop()

1 个答案:

答案 0 :(得分:0)

我认为你所看到的是预期的行为。

当count达到0时 - 标签更新排队等待,但是下一行代码会停止GUI,这将在几毫秒之后发生 - 因此GUI将在有机会更新之前消失正在屏幕上显示。

如果要在标签更新和GUI关闭之间引入一点延迟,可以使用.after()功能。

例如:

if count == 0:
    win.after(500, win.stop)

这将在调用停止功能之前延迟500毫秒。

或者,如果您希望GUI保持打开状态,显示Count= 0,并且仅在用户下次按下按钮时关闭,请将原始代码更改为仅在{{1}时调用win.stop() }

因此,完整代码可能如下所示:

count == -1