我正在尝试在appJar和python3上获得GUI编程方面的经验。我试图添加一个动作发生时,按钮是按下。它工作正常,但结局很奇怪。
代码的一部分如下。只要按下按钮,就会调用“按下”函数。效果很好。但是,当计数达到0时,没有按下数字0(尽管,按照代码,数字0应该打印在名为“lb1”的标签上)。当按下按钮,计数变量=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()发布于 2017-09-19 21:49:20
我认为你看到的是预期的行为。
当计数达到0时-标签更新排队等待发生,但是下一行代码将停止GUI,这将在几毫秒后发生-因此GUI将在有机会更新屏幕上显示的内容之前消失。
如果您想在标签更新和GUI关闭之间引入一个轻微的延迟,您可以使用.after()函数。
例如:
if count == 0:
win.after(500, win.stop)这将在调用stop函数之前延迟500毫秒。
或者,如果您希望图形用户界面保持打开,显示Count= 0,并且只在用户下一次按下按钮时关闭,则将原始代码更改为只在count == -1时调用win.stop()。
因此,完整的代码可能如下所示:
from appJar import gui
count=10
def pressed(btnName):
global count
count-=1
win.setLabel("lb1","Count= "+ str(count))
if count == 0:
win.after(500, win.stop)
win = gui()
win.addLabel("lb1", "empty")
win.addButton("PRESS", pressed)
win.go()https://stackoverflow.com/questions/46265750
复制相似问题