[英]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.