вернуть клавиатуру из tkinter - PullRequest
1 голос
/ 09 октября 2010

Я работаю над графическим приложением, и в начале работы я хотел бы задать пользователю один вопрос о конфигурации. Графическая структура (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», что не идеально. *

1 Ответ

1 голос
/ 24 февраля 2011

Вы пробовали:

grab_release (self)
Что делает: Отпустите захват для этого виджета, если в данный момент установлен.

Где "Захват направляет все события этому и последующим виджетам в приложении."

как в:

root.grab_release()

Надеюсь, вы не пробовали этот.

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