为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕森王 2022-03-09 21:06:24
我是尝试 python GUI 的新手,并尝试了 tkinter 和 pyglet,但只能通过教程来了解基本的类和函数。但我目前正在尝试做的是获得一个按钮来增加一个数字,同时显示该数字。不知何故,即使变量 number 被全局声明为 0,增加它的函数也不做任何事情,它实际上会产生错误:'UnboundLocalError: local variable 'number' referenced before assignment'。我不知道如何纠正这个问题。我在 YouTube 和文章中看到的教程并没有具体讨论如何做到这一点。这篇文章确实提到了如何更改某个文本,但没有提到以前创建的变量(在我的例子中是“数字”)。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():number += 1button = Button(window, text="Push Me", command=clicked)button.grid(column=1, row=2)window.mainloop()有没有办法做到这一点?此外,我一直在寻找如何通过滴答声来增加时间、处理事件等。但是我在互联网上找到的所有内容都是关于在 GUI 上直接显示时钟,这是没用的,或者至少我不知道如何使用它来实现滴答声功能。
查看完整描述

2 回答

?
桃花长相依

TA贡献1860条经验 获得超8个赞

您需要像您一样增加数字,但还需要更新 Label 以显示新数字:


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()使用它。


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()


查看完整回答
反对 回复 2022-03-09
?
繁花如伊

TA贡献2012条经验 获得超12个赞

这是我的整个代码:


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()

当按钮直接位于条目小部件内部时,它对我来说看起来更好。


查看完整回答
反对 回复 2022-03-09
  • 2 回答
  • 0 关注
  • 195 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信