繁体   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