Я новичок в опробовании графического интерфейса python и пробовал tkinter и pyglet, но только с помощью руководств, чтобы понять основные классы и функции. Но то, что я сейчас пытаюсь сделать, это получить кнопку для увеличения числа, одновременно отображая это число. Каким-то образом, даже несмотря на то, что номер переменной был указан глобально как 0, функция для его увеличения ничего не делает, фактически выдает ошибку: «UnboundLocalError: локальная переменная «номер», на которую ссылается перед назначением». Я понятия не имею, как это исправить.
Учебники, которые я видел как на 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()
Есть какой-либо способ сделать это? Также я искал, как добавить время, обрабатывать события и тому подобное с помощью тиков. Но все, что я нахожу в Интернете, касается буквального отображения часов в графическом интерфейсе, что бесполезно, или, по крайней мере, я не знаю, как использовать его, чтобы иметь функцию тиканья.
Вам нужно увеличить число, как и вы, но также обновить метку, чтобы отобразить новый номер:
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()
Вы случайно не знаете, как добавить галочки?
@ Дэн, я не знаю, что ты имеешь в виду под «тиками». Однако это звучит как несвязанный вопрос, поэтому вы должны попробовать сами и сделать новый пост, если вам нужна помощь.
Вот весь мой код:
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()
Мне кажется лучше, когда кнопки находятся непосредственно внутри виджета входа.
Чувак, ты чертов гений, это полностью сработало! Спасибо брув :)