Как использовать кнопку Tkinter с графическим интерфейсом, чтобы увеличить число и отобразить его - PullRequest
0 голосов
/ 20 июня 2019

Я новичок в тестировании Python GUI и пробовал 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()

Есть ли способ сделать это?Также я искал, как добавить время, обрабатывать события и тому подобное, с помощью галочек.Но все, что я нахожу в Интернете, - это буквальное отображение часов в графическом интерфейсе, что бесполезно, или, по крайней мере, я не знаю, как их использовать, чтобы иметь функцию тиканья.

1 Ответ

1 голос
/ 20 июня 2019

Вам нужно увеличить число, как и вы, но также обновить метку для отображения нового номера:

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.Он позаботится об обновлениях Label автоматически, но для его работы необходимо использовать 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...