Ткинтер не обновляется пока l oop правильно - PullRequest
0 голосов
/ 22 марта 2020

Попытка сделать базис c GUI, где он считается до числа, которое вводит пользователь.

Когда я нажимаю кнопку, чтобы подсчитать, пока l oop, это не меняет текст контрэтикетки таким образом, я тоже этого хочу.

Так что я хочу поместить 100 в поле ввода и смотреть, как он считается до 100 как "1,2,3,4,5 ..... et c "но в данный момент я нажимаю кнопку, и она переходит к 100.

from tkinter import *

def countloop():
    x = 1
    userinput = int(integerinput.get())
    while x <= userinput:
        counterlabel.configure(text=x)
        x += 1

window = Tk()

counttoolabel = Label(window, text="Count To?:", font=("Arial Bold", 50))
counttoolabel.grid(column=0, row=0)

integerinput = Entry(window, font=("Arial Bold", 50))
integerinput.grid(column=1, row=0)

inputbutton = Button(window, text="Count", font=("Arial Bold", 50), command=countloop)
inputbutton.grid(column=0, row=1)

counterlabel = Label(window, text=0, font=("Arial Bold", 50))
counterlabel.grid(column=1, row=1)

window.mainloop()

1 Ответ

0 голосов
/ 22 марта 2020

Используйте метод after, встроенный в tkinter.

from tkinter import *

def countloop(x=0):
    userinput = int(integerinput.get())

    x += 1

    counterlabel.configure(text=x)

    if x < userinput:
        window.after(1000, lambda: countloop(x))

window = Tk()

counttoolabel = Label(window, text="Count To?:", font=("Arial Bold", 50))
counttoolabel.grid(column=0, row=0)

integerinput = Entry(window, font=("Arial Bold", 50))
integerinput.grid(column=1, row=0)

inputbutton = Button(window, text="Count", font=("Arial Bold", 50), command=countloop)
inputbutton.grid(column=0, row=1)

counterlabel = Label(window, text=0, font=("Arial Bold", 50))
counterlabel.grid(column=1, row=1)

window.mainloop()
...