appJar python:按钮按下动作
appJar python: button press action
我正在尝试使用 python3 在 appJar 上进行 GUI 编程的实践经验。我正在尝试添加一个在按下按钮时发生的动作。它工作正常,但奇怪地结束了。
部分代码如下。只要按下按钮,函数 "pressed" 就会被调用。它工作正常。但是,当计数达到 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()
我认为您看到的是预期的行为。
当计数达到 0 时 - 标签更新排队等待发生,但随后下一行代码停止了 GUI,这将在几毫秒后发生 - 因此 GUI 将在有机会更新之前消失更新屏幕上显示的内容。
如果你想在标签更新和 GUI 关闭之间引入一个轻微的延迟,你可以使用 .after()
函数。
例如:
if count == 0:
win.after(500, win.stop)
这将在调用停止函数之前延迟 500 毫秒。
或者,如果您希望 GUI 保持打开状态,显示 Count= 0
,并且仅在用户下次按下按钮时关闭,请将您的原始代码更改为仅在 [= 时调用 win.stop()
15=]
因此,完整代码可能如下所示:
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()
我正在尝试使用 python3 在 appJar 上进行 GUI 编程的实践经验。我正在尝试添加一个在按下按钮时发生的动作。它工作正常,但奇怪地结束了。
部分代码如下。只要按下按钮,函数 "pressed" 就会被调用。它工作正常。但是,当计数达到 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()
我认为您看到的是预期的行为。
当计数达到 0 时 - 标签更新排队等待发生,但随后下一行代码停止了 GUI,这将在几毫秒后发生 - 因此 GUI 将在有机会更新之前消失更新屏幕上显示的内容。
如果你想在标签更新和 GUI 关闭之间引入一个轻微的延迟,你可以使用 .after()
函数。
例如:
if count == 0:
win.after(500, win.stop)
这将在调用停止函数之前延迟 500 毫秒。
或者,如果您希望 GUI 保持打开状态,显示 Count= 0
,并且仅在用户下次按下按钮时关闭,请将您的原始代码更改为仅在 [= 时调用 win.stop()
15=]
因此,完整代码可能如下所示:
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()