Я сделал функцию в своем приложении 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
Исключения находятся в том же файле:
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()
Работает нормально. Но это не похоже на очень хороший и питонский способ обработки диалогов с паролями. Или это?