2013-08-30 102 views
1

我遇到了一個相當常見的問題,但似乎找不到明顯的解決方案。如何在批處理模式下運行時禁用Tkinter對話框

我想包括一個自動化測試作爲我的TFS構建腳本的一部分,分發Python。然而,不幸的開發商之一已經把這個包的_ _ _初始化的_.py一個:

import Tkinter 
import tkMessageBox 

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

warningWindow.destroy() 

這是好事,本身 - 而不是在它被批正在運行(它使一切都暫停)。

我最初的希望是Tkinter有一個禁用彈出窗口的配置設置,但如果它確實存在,我找不到它。

另一種方法是'入侵'tkMessageBox模塊,並將showwarning替換爲不做任何事情的東西。我已經看到了這一點,但我不記得該怎麼做...

我更希望有比這更好的方法?

回答

0

OK,在沒有更好的解決辦法,我會說我做了什麼:

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我猜,但我希望能有更優雅/通用的東西。

相關問題