2013-08-30 2 views
1

У меня есть то, что должно быть довольно распространенной проблемой, но я не могу найти очевидного решения.Как отключить диалоги Tkinter во время работы в пакетном режиме

Я пытаюсь включить автоматическое тестирование как часть моего скрипта сборки TFS, который распространяет Python. К сожалению, однако, один из разработчиков поставил это в одном из программ пакета _ _ _ INIT _.py:

import Tkinter 
import tkMessageBox 

warningWindow = Tkinter.Tk() 
warningWindow.withdraw() 
tkMessageBox.showwarning("WARNING", "blah, blah, blah") 

warningWindow.destroy() 

Это хорошо само по себе - но не при его запуске в пакетном режиме (это делает все паузу).

Моя первоначальная надежда заключалась в том, что у Tkinter была настройка конфигурации, которая отключает всплывающие окна, но если это произойдет, я не могу ее найти.

Другой способ - «взломать» модуль tkMessageBox и заменить showwarning тем, что ничего не делает. Я видел это, но я не помню, как это сделать ...

Я скорее надеюсь, что есть лучший способ, чем любой из них?

ответ

0

ОК, в отсутствие лучшего решения, я скажу, что я сделал:

import os 
if not os.environ.has_key('SILENT_MODE'): 
    import Tkinter 
    import tkMessageBox 

    warningWindow = Tkinter.Tk() 
    warningWindow.withdraw() 
    tkMessageBox.showwarning("WARNING", "blah, blah, blah") 

    warningWindow.destroy() 

И в сценарии запуска:

SET SILENT_MODE=1 
python -m unittest discover 

Это OK я думаю, но Я надеялся на что-то более элегантное/родовое.

Смежные вопросы