Быстро меняющиеся ярлыки в Tkinter? - PullRequest
0 голосов
/ 22 июня 2019

Я бы хотел отобразить некоторые цифры как можно быстрее в Tkinter.Программа, которую я пытаюсь сделать, отправляет много цифр и должна показывать их.

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

from tkinter import *
import time
window = Tk()
lbl13 = Label(window, text="-")
lbl13.grid(column=0, row=0)

x = 0
while 1:
   lbl13.config(text = str(x))
time.sleep(2)
x +=1

window.mainloop()

Окно Tkinter даже не открывается на моем компьютере.Это потому что у меня слишком слабое оборудование?Что я могу изменить, чтобы эта Программа также работала на моем компьютере.Спасибо за каждый ответ!

Ответы [ 2 ]

2 голосов
/ 22 июня 2019

Бесконечный цикл while не даст программе добраться до линии, где вы вызываете window.mainloop().Вы должны вызывать window.update () несколько раз вместо window.mainloop () в конце:

from tkinter import *
import time
window = Tk()
lbl13 = Label(window, text="-")
lbl13.grid(column=0, row=0)

x = 0
while 1:
   lbl13.config(text = str(x))
   window.update()
   x +=1
1 голос
/ 22 июня 2019

Использование after и правильного mainloop, вероятно, является более гибким способом достижения того, чего вы хотите; он также может быть многократно использован в разных контекстах и ​​может использоваться в приложении, которое просто увеличивает число на метке более чем на тривиальное значение:

может быть что-то вроде этого:

import tkinter as tk


if __name__ == '__main__':

    def increment():
        var.set(var.get() + 1)
        label.after(1, increment)

    window = tk.Tk()
    var = tk.IntVar(0)
    label = tk.Label(window, textvariable=var)
    label.pack()

    increment()

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