首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >appJar python:按按钮操作

appJar python:按按钮操作
EN

Stack Overflow用户
提问于 2017-09-17 15:27:18
回答 1查看 816关注 0票数 0

我正在尝试在appJarpython3上获得GUI编程方面的经验。我试图添加一个动作发生时,按钮是按下。它工作正常,但结局很奇怪。

代码的一部分如下。只要按下按钮,就会调用“按下”函数。效果很好。但是,当计数达到0时,没有按下数字0(尽管,按照代码,数字0应该打印在名为“lb1”的标签上)。当按下按钮,计数变量=1时,计数变量应该减少一个,然后标签文本应该用新的计数号更新。然后,它检查计数器是否=0,如果为真,则退出代码。现在,表单在用新值更新标签之前终止。通过一些故障排除,我发现标签值只有在表单结束时才会更新,尽管更新它的代码行已经执行。

有人能弄清楚这事吗?

代码语言:javascript
复制
from appJar import gui
count=10
def pressed(btnName):
    global count
    count-=1
    win.setLabel("lb1","Count= "+ str(count))
    if count==0:
        win.stop()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-19 21:49:20

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

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

如果您想在标签更新和GUI关闭之间引入一个轻微的延迟,您可以使用.after()函数。

例如:

代码语言:javascript
复制
if count == 0:
    win.after(500, win.stop)

这将在调用stop函数之前延迟500毫秒。

或者,如果您希望图形用户界面保持打开,显示Count= 0,并且只在用户下一次按下按钮时关闭,则将原始代码更改为只在count == -1时调用win.stop()

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

代码语言:javascript
复制
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()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46265750

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档