首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用GUI Tkinter按钮递增并显示数字

如何使用GUI Tkinter按钮递增并显示数字
EN

Stack Overflow用户
提问于 2019-06-20 07:19:24
回答 2查看 2.2K关注 0票数 0

我刚开始尝试python GUI,并尝试过tkinter和pyglet,但只是通过教程,按顺序-理解基本的类和函数。但我现在正在尝试做的是让一个按钮来增加一个数字,同时显示这个数字。不知何故,即使变量number全局声明为0,增加它的函数并没有做任何事情,它实际上产生了一个错误:'UnboundLocalError:局部变量'number‘在赋值之前引用’。我不知道如何纠正这一点。

我在YouTube上和作为一篇文章看到的教程,都没有确切地讨论如何做到这一点。这篇文章确实提到了如何更改某个文本,但没有提到之前创建的变量(在我的例子中是'number')。

代码语言:javascript
复制
from tkinter import *
number = 0

window = Tk()
window.title("Programme")
window.geometry('350x250')

label = Label(window, text=number)
label.grid(column=0,row=0)

def clicked():
number += 1

button = Button(window, text="Push Me", command=clicked)
button.grid(column=1, row=2)

window.mainloop()

有没有办法做到这一点?此外,我一直在寻找如何添加时间,以处理事件等,通过滴答。但我在互联网上找到的所有东西都是关于在GUI上显示时钟的,这是没有用的,或者至少我不知道如何使用它来实现滴答功能。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-20 07:27:03

您需要像您一样递增数字,但还需要更新标签以显示新数字:

代码语言:javascript
复制
from tkinter import *
number = 0

window = Tk()
window.title("Programme")
window.geometry('350x250')

label = Label(window, text=number)
label.grid(column=0,row=0)

def clicked():
    global number
    number += 1
    label.config(text=number)

button = Button(window, text="Push Me", command=clicked)
button.grid(column=1, row=2)

window.mainloop()

一种更简单的方法是使用整数的tkinter版本:IntVar。它会自动处理标签更新,但需要使用get()set()来处理它。

代码语言:javascript
复制
from tkinter import *

def clicked():
    number.set(number.get()+1)

window = Tk()
window.title("Programme")
window.geometry('350x250')
number = IntVar()

label = Label(window, textvariable=number)
label.grid(column=0,row=0)

button = Button(window, text="Push Me", command=clicked)
button.grid(column=1, row=2)

window.mainloop()
票数 2
EN

Stack Overflow用户

发布于 2020-09-29 03:24:16

下面是我的完整代码:

代码语言:javascript
复制
from tkinter import *

def up():
    number.set(number.get()+1)

def down():
    number.set(number.get()-1)

window = Tk()
window.title("Programme")
window.geometry('350x250')
number = IntVar()

frame = Frame(window)
frame.pack()

entry = Entry(frame, textvariable=number, justify='center')
entry.pack(side=LEFT, ipadx=15)

buttonframe = Frame(entry)
buttonframe.pack(side=RIGHT)

buttonup = Button(buttonframe, text="▲", font="none 5", command=up)
buttonup.pack(side=TOP)

buttondown = Button(buttonframe, text="▼", font="none 5", command=down)
buttondown.pack(side=BOTTOM)

window.mainloop()

对于我来说,当按钮直接位于entry小部件内部时,效果会更好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56677084

复制
相关文章

相似问题

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