tkinter
имеет root.after(millisecond, function)
для запуска функции с некоторой задержкой, и вы можете использовать ее для повторения некоторой функции - так что она будет работать аналогично l oop, но не будет блокировать mainloop()
import tkinter as tk # PEP8: `import *` is not preferred
# --- function ---
def value():
print(led.get())
# run again after 1000ms
master.after(1000, value)
# --- main --
master = tk.Tk()
led = tk.Scale(master, from_=5, to=1)
led.pack()
# run first time at once
#value()
# or run fist time after 1000ms
master.after(1000, value)
master.mainloop()
Кстати: в after()
вы должны использовать имя функции без ()
и без аргументов. Если вам нужно работать с аргументами, тогда master.after(1000, value, arg1, arg2, ...)
PEP 8 - Руководство по стилю для Python Код
BTW : Вы можете назначить функцию для Scale
, и она будет запускаться, когда `Масштаб изменяет значение - и вам не понадобится l oop для ее проверки.
import tkinter as tk # PEP8: `import *` is not preferred
# --- function ---
def on_change(new_value):
print(led.get())
print(new_value)
# --- main --
master = tk.Tk()
led = tk.Scale(master, from_=5, to=1, command=on_change)
led.pack()
master.mainloop()
Документация (effbot.org ): Масштаб