Выполнение одновременно с tkinter.mainl oop () - PullRequest
0 голосов
/ 06 мая 2020

Я пытаюсь создать GUI с помощью tkinter, у которого есть обновляющийся дисплей. У меня есть этот код:

while True:
    val= randint(1,50)

И это l oop для моих GUI,

label2= Label(root, text= val , font=("Helvetica", 60))
label2.place(relx=0.53, rely=0.44, anchor=CENTER)

root.mainloop()

Эти два, похоже, не работают одновременно. Первый, помещенный над другим, выполняется первым, который является бесконечным l oop, поэтому он никогда не достигает "root .mainl oop ()" . Я хочу постоянно обновлять содержание лейбла. Как мне это сделать?

Ответы [ 2 ]

0 голосов
/ 08 мая 2020

Наконец, я смог исправить это с помощью этого,

while True:
    val= randint(1,50)
    label2.config(text=val)
    label2.after(200, self.get_upvotes)

label2= Label(root, font=("Helvetica", 60))
label2.place(relx=0.53, rely=0.33, anchor=CENTER)
0 голосов
/ 06 мая 2020

Один из способов сделать это - использовать Tk.After(delay,callback). Вы можете обернуть while l oop в функцию и использовать его в качестве обратного вызова.

Например:

def f():
    val.set(randint(1,50))
    root.after(1,f)

#Later
root.after(1, f)
root.mainloop()

Одна вещь, которую также необходимо изменить, - это то, как вы ' повторно установить val в Label. Это должно быть textvariable=val вместо text=val

.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...