如何使用 GUI Tkinter 按钮增加一个数字并显示它

我是尝试 python GUI 的新手,并尝试了 tkinter 和 pyglet,但只能通过教程来了解基本的类和函数。但我目前正在尝试做的是获得一个按钮来增加一个数字,同时显示该数字。不知何故,即使变量 number 被全局声明为 0,增加它的函数也不做任何事情,它实际上会产生错误:'UnboundLocalError: local variable 'number' referenced before assignment'。我不知道如何纠正这个问题。


我在 YouTube 和文章中看到的教程并没有具体讨论如何做到这一点。这篇文章确实提到了如何更改某个文本,但没有提到以前创建的变量(在我的例子中是“数字”)。


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 上直接显示时钟,这是没用的,或者至少我不知道如何使用它来实现滴答声功能。


慕森王
浏览 196回答 2
2回答

桃花长相依

您需要像您一样增加数字,但还需要更新 Label 以显示新数字:from tkinter import *number = 0window = 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()使用它。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()

繁花如伊

这是我的整个代码: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()当按钮直接位于条目小部件内部时,它对我来说看起来更好。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python