2016-03-29 154 views
0

我正在爲使用python的windows創建桌面應用程序。我用Tkinter來做GUI。我的代碼涉及觸發GUI,每當我執行它。 我的要求是,在任何給定的時間點,我應該只運行一個GUI實例。我可以設置一些阻止在Tkinter中創建新實例的參數嗎?防止創建多個GUI實例

請爲此建議一些選項。

+0

會一個新的實例是從流程內部創建,還是作爲新流程在外部啓動?對於前者,類變量解決方案將起作用。 –

回答

1

如果有人在已經運行時嘗試生成GUI,那麼您需要哪種類型的行爲? 基本上你可以做的是給你的類增加一個num_instances屬性,每次創建一個實例時該屬性都會增加,然後在你的類的__del__方法中遞減。然後,您可以根據您想要的行爲,在__init____new__中進行檢查。

class GUI: 
    num_instances = 0 

    def __init__(self): 
     if self.__class__.num_instances: 
      raise 
     self.__class__.num_instances += 1 

    def __del__(self): 
     self.__class__.num_instances -= 1 

這僅僅是一個草案,因此檢查它確實總是表現爲期望的,但它應該讓你去。

編輯: 我忘了提,但當然,你也可以看看singleton pattern

編輯2: 防止多次運行,看this post

+0

是的,如果一個GUI已經在運行並且新的實例被觸發,我仍然只需要一個GUI。兩者都是獨立的。我懷疑這個屬性增加是否真的有幫助。 –

+0

你的意思是「兩者都是獨立的」?你的意思是說Python腳本可以運行多次? 你想要操作系統只有一個程序實例,或者它是python腳本嗎? – Silmathoron

+0

python腳本會運行多次,我希望操作系統只有一個GUI腳本實例,每次運行python腳本時都會調用它。 –