簡體   English   中英

Python等待直到條件滿足

[英]Python waiting until condition is met

我創建了一個 GUI,它會向用戶詢問用戶/密碼。 創建 GUI 的類調用另一個創建 Web 瀏覽器的類,並嘗試使用同一類的方法登錄網站。 如果登錄成功,GUI 對象的變量變為“True”

我的主文件是下一個:

from AskUserPassword import AskGUI
from MainInterfaceGUI import MainGUI

Ask = AskGUI()
Ask = Ask.show()

MainInterface = MainGUI()

if Ask.LoginSuccesful == True:
    Ask.close()
    MainInterface.show()
    

如果登錄成功,我想隱藏用戶/密碼 GUI 並顯示主 GUI。 上面的代碼顯然不起作用。

我怎樣才能讓 Python 等到滿足這種類型的某些條件?

與其不斷檢查要滿足的條件,為什么不提供登錄時想要執行的操作作為對AskGUI對象的回調,然后在嘗試登錄時讓AskGUI對象調用回調? 就像是:

def on_login(ask_gui):
    if ask_gui.LoginSuccesful:
        ask_gui.close()
        MainInterface.show()


Ask = AskGUI()
Ask.login_callback = on_login

然后,在AskGUI ,當單擊登錄按鈕並檢查憑據時,您會執行以下操作:

def on_login_click(self):
    ... 
    # Check login credentials.
    self.LoginSuccessful = True

    # Try to get self.login_callback, return None if it doesn't exist.
    callback_function = getattr(self, 'login_callback', None) 
    if callback_function is not None:
        callback_function(self)

關於。

我更喜歡在主文件中包含所有結構。 這是一個簡化的例子,但如果我開始從一個類中的一個方法觸發,這個類也位於另一個類中......這將很難理解

我推薦這種方式,因為處理登錄時發生的事情的所有代碼都包含在需要登錄的類中。處理要顯示哪些 UI 元素的代碼( on_login() )包含在處理該事件的類中. 您不需要在后台執行任何操作來不斷檢查Ask.LoginSuccessful是否已更改。 當您使用不錯的 IDE 時,很容易跟蹤每個函數的定義位置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM