phobious
@phobious
Не отрицаю свою глупость, и нет, мне не стыдно

Как запустить цикл внутри Tkinter?

С вопросом о том можно ли свернуть приложение в трей разобрались

возник другого рода вопрос, как мне запихнуть цикл в код , при этом чтоб и окно Tkinter работало всегда (там же задействован mainloop()), и при этом работал цикл внутри этого же скрипта , к примеру который будет просто спамить в консоль "123" с помощью print()

код окна Tkinter

from pystray import MenuItem as item
import pystray
from PIL import Image
import tkinter as tk

window = tk.Tk()
window.title("Title")

def quit_window(icon, item):
    icon.stop()
    window.destroy()

def show_window(icon, item):
    icon.stop()
    window.after(0,window.deiconify)

def withdraw_window():  
    window.withdraw()
    image = Image.open("icon.ico")
    menu = (item('Quit', quit_window), item('Show', show_window))
    icon = pystray.Icon("name", image, "title", menu)
    icon.run()

window.protocol('WM_DELETE_WINDOW', withdraw_window)
window.mainloop()


собственно из прошлого вопроса.
  • Вопрос задан
  • 3157 просмотров
Решения вопроса 1
@o5a
Для бесконечного цикла нужно использовать after, который будет перевызывать сам себя
def repeated():
    print(123)
    window.after(1000, repeated)

# и в основном коде программы запускать этот "цикл"
window.after(0, repeated)
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
yupiter7575
@yupiter7575
Python программист
from tkinter import *
root = Tk()
root.update()
while True:
    pass
Ответ написан
Комментировать
Askhat00
@Askhat00
Начинающий Веб разработчик
from tkinter import *
root = Tk()
def repeat():
    while 1:
        print(123)
        root.update()
check = Button(root, text="Проверить ключ", command=lambda:repeat())
check.pack()
root.mainloop()
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы