我正在尝试使用 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()
答案 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