Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+2

Как сделать чтобы при открытии окна tkinter код продолжал выполняться? Python

тоесть открывается окно root там еще выполняются действия по настройки окна (название окна title, geometry, resizable и т.д.) и после root.mainloop() пока я не закрою окно код не продолжит работу, пытался поставить root.mainloop() (завершение цикла окна) в самом конце кода, весь код исполнился но окно tkinter не открылось, подскажите плиз

По дате
По рейтингу
Аватар пользователя

Проблема, описанная вами, чаще всего возникает из-за порядка выполнения кода. В Python, tkinter работает так, что после вызова root.mainloop() выполнение программы блокируется до тех пор, пока окно tkinter не будет закрыто.

Чтобы продолжить выполнение программы после открытия окна tkinter, вы можете использовать многопоточность. Один поток будет отвечать за открытие окна tkinter и его работы, а другой будет выполнять ваш основной код.

Ниже приведен пример, как это можно сделать:

python
import tkinter as tk
import threading

def start_tkinter():
root = tk.Tk ()
root.geometry("300x200")
root.title("Пример ТКинтер")
root.mainloop()

def main_program():
# Основной код программы
print("Основной код продолжает работу после открытия окна Tkinter")

# Создаем потоки для работы c Tkinter и с основной программой
tkinter_thread = threading.Thread(target=start_tkinter)
main_thread = threading.Thread(target=main_program)

# Запускаем потоки
tkinter_thread.start()
main_thread.start()

# Ждем завершения потоков
tkinter_thread.join()
main_thread.join()


В этом примере два потока запускаются параллельно. Один отвечает за работу окна tkinter, а другой - за основной код программы. Таким образом, после открытия окна tkinter, основной код продолжит свое выполнение.

Обратите внимание, что использование многопоточности требует внимания к синхронизации доступа к общим ресурсам