Я использую gtk для создания диалогового окна выбора файла:
from gi.repository import Gtk
import time
dialog = Gtk.FileChooserDialog("World to load:", None,
Gtk.FileChooserAction.OPEN,
(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
Gtk.STOCK_OPEN, Gtk.ResponseType.OK))
response = dialog.run()
if response == Gtk.ResponseType.OK:
print("load", dialog.get_filename())
else:
print("cancel")
dialog.destroy()
time.sleep(5)
Код работает: я получаю либо имя файла, либо 'отмена напечатана.Но окно выбора не закрывается до выхода программы через 5 секунд.Там просто висит окно, программа запускается дальше и отзывчива.Насколько я могу сказать, замена dialog.destroy()
на dialog.hide()
ничего не меняет.
Я получаю предупреждение:
Gtk-Message: 10:27:04.843: GtkDialog mapped without a transient parent. This is discouraged.
не уверен, связано ли это.
Я пробовал различные версии Gtk.main()
, Gtk.main_quit()
и другие способы форсирования основного цикла, однако мое (по общему признанию, несовершенное) чтение заключается в том, что файловый диалог реализует сами циклы и не нуждается в основном цикле.
Кто-нибудь может помочь мне закрыть это окно?
Я использую python 3.6.7, gi 3.26.1 в Ubuntu 18.04