我正在爲使用python的windows創建桌面應用程序。我用Tkinter來做GUI。我的代碼涉及觸發GUI,每當我執行它。 我的要求是,在任何給定的時間點,我應該只運行一個GUI實例。我可以設置一些阻止在Tkinter中創建新實例的參數嗎?防止創建多個GUI實例
請爲此建議一些選項。
我正在爲使用python的windows創建桌面應用程序。我用Tkinter來做GUI。我的代碼涉及觸發GUI,每當我執行它。 我的要求是,在任何給定的時間點,我應該只運行一個GUI實例。我可以設置一些阻止在Tkinter中創建新實例的參數嗎?防止創建多個GUI實例
請爲此建議一些選項。
如果有人在已經運行時嘗試生成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
是的,如果一個GUI已經在運行並且新的實例被觸發,我仍然只需要一個GUI。兩者都是獨立的。我懷疑這個屬性增加是否真的有幫助。 –
你的意思是「兩者都是獨立的」?你的意思是說Python腳本可以運行多次? 你想要操作系統只有一個程序實例,或者它是python腳本嗎? – Silmathoron
python腳本會運行多次,我希望操作系統只有一個GUI腳本實例,每次運行python腳本時都會調用它。 –
會一個新的實例是從流程內部創建,還是作爲新流程在外部啓動?對於前者,類變量解決方案將起作用。 –