Tkinter destroy () замораживает окно, а не закрывает его до завершения программы? - PullRequest
0 голосов
/ 16 июня 2020

Итак, у меня были проблемы с Tkinter для Python 3 на MacOS 10.15.5. Вот воспроизводимый код для моей системы:

import tkinter as tk
import tkinter.messagebox as msgbox

def quit():
    root.destroy()

root = tk.Tk()

lbl = tk.Label(root,text="This is a label.")
ent = tk.Entry(root)
btn = tk.Button(root,text="Quit", command=quit)

lbl.pack()
ent.pack()
btn.pack()

root.mainloop()
for i in range(800000):
    print(i)

После того, как я нажму «выйти», for l oop работает в фоновом режиме, но окно Tkinter зависает (с вращающимся колесом) до тех пор, пока for l oop заключает. Я пытаюсь создать программу, которая вначале принимает вводимые пользователем данные, а затем запускает код в фоновом режиме, чтобы вы могли понять, почему я бы предпочел не замораживать GUI на все время.

Я запускаю этот код с терминала, но у меня такая же проблема возникает при использовании IDLE. Я попытался удалить и переустановить несколько разных версий python (с веб-сайта python, поскольку, по-видимому, это способ правильно использовать Tk), и эта проблема сохраняется.

Как ни странно, я видел, что добавление оператора input вместо любого другого кода сразу после mainloop приводит к закрытию окна, но я не могу выяснить почему, и это не будет работать с моей более широкой программой.

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