Я работаю над графическим приложением, и в начале работы я хотел бы задать пользователю один вопрос о конфигурации. Графическая структура (Panda3D) имеет ужасные диалоговые окна по умолчанию, поэтому я хотел бы использовать что-то вроде tkInter для предоставления модального диалога. Я попробовал это:
import Tkinter
import tkMessageBox
root = Tkinter.Tk()
# hide the root window
root.withdraw()
config.PLAY_MUSIC = tkMessageBox.askyesno( "My App",
"Would you like this app to play music from your iTunes collection?" )
root.destroy()
Это делает то, что я хочу, но похоже, что все дальнейшие события клавиатуры направляются в tkInter, а не в мое приложение Panda3D. Мне не нужно больше ничего делать с тк после этого диалога.
Я могу положить диалог tk в отдельное приложение, которое связывает мое, я полагаю, но мне интересно, есть ли способ убить tk и вернуть клавиатуру без полного выхода из моего приложения.
Обновление: попробовал root.quit (), который, похоже, возвращает клавиатуру, но при выходе из моей программы происходит сбой «Fatal Python error: PyEval_RestoreThread: NULL tstate», что не идеально. *