gpt4 book ai didi

python - 最Pythonic的方式来处理对话框?

转载 作者:太空宇宙 更新时间:2023-11-03 19:24:48 24 4
gpt4 key购买 nike

我在我的 wxpython 应用程序中创建了一个弹出密码框的函数。 dialogs.py 中的代码如下所示:

def password_dialog(self, password):
# Only ask for password if it actually exist
if password == 'False':
return True

question = 'Put in password:'
dialog = wx.PasswordEntryDialog(self, question, 'Password...')
if dialog.ShowModal() == wx.ID_OK:
if dialog.GetValue() == password:
dialog.Destroy()
return True
else:
dialog.Destroy()
__wrong_pass()
raise WrongPassword
else:
dialog.Destroy()
raise CancelDialog

异常(exception)情况位于同一文件中:

class WrongPassword(Exception):
pass

class CancelDialog(Exception):
pass

在我的主程序中,我有一些如下所示的方法:

def on_sort_songs(self, event): 
"""Renumbering the database and sort in artist and title order"""
# Check for password first
try:
dialogs.password_dialog(self, opts.generic['password'])
except dialogs.CancelDialog:
return
except dialogs.WrongPassword:
return

# Sort database and repopulate GUI
self.jbox.sort_songs()
self.populate_songlist()

工作正常。但这似乎不是处理密码对话框的一种很好的Python式方法。或者是吗?

最佳答案

我认为在这种情况下您的对话框函数不应该引发异常。只需让它根据验证是否通过返回 True 或 False 即可。那么您需要做的就是:

validated = dialogs.password_dialog(self, opts.generic['password'])
if validated:
print "Yay"
else:
print "Boo"

只有您想要区分的其他随机故障情况才需要异常(exception),例如“身份验证服务器已关闭”

我认为在这种情况下返回 True 或 False 很好的另一个原因是因为这样您就可以使用可以交换的模块化身份验证方法。例如 django 如何使用返回 bool 值的单个 is_authenticated() 方法。最终用户只需要关心它是否经过认证。不是它具体引发的各种异常,例如对话框被关闭。有些情况甚至可能不使用对话框..可能是命令行,或网络界面等。

关于python - 最Pythonic的方式来处理对话框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8562868/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com