【问题标题】:Tkinter - need reiterative solutionTkinter - 需要重复解决方案
【发布时间】:2020-11-30 16:59:51
【问题描述】:

我正在为学校制作一个项目。此注册系统按预期工作,但问题是一旦输入电子邮件/密码

我认为这是因为该方法没有两次从我的输入表单中获取信息,并且正在识别第一次获取的数据。我试图将其设置为条件设置良好的 while 循环,但它的行为仍然很时髦。

我所要求的只是有人向我介绍一种简单的方法,让这个消息框被抛出一次,这样他们就可以输入新信息(就像我的电子邮件已经存在声明一样)。

代码:

def go(self):
    run = True
    email = self.email_entry.get()
    password = self.password_entry.get()

    if len(email) or len(password) < 3:
        tkinter.messagebox.showinfo("Error", "Please enter a valid email/password -- (minimum three characters")
        run = False

    if run:
        if email not in self.customers:
            self.customers[email] = password

            with open("shopping_list.dat", "wb") as data_file:
                pickle.dump(self.customers, data_file)

            self.sign_up.destroy()
            shopping_list = ShoppingList()
        else:
            tkinter.messagebox.showinfo("Error", "The email entered already exists...try again.")

【问题讨论】:

  • 应该改成if len(email) &lt; 3 or len(password) &lt; 3吗?

标签: python tkinter tk


【解决方案1】:

很遗憾,我没有足够的时间来包含实际代码,但这是我的建议:

当用户名或密码低于最小字符限制时,将某种变量设置为 True。然后做一个 if 语句,如果该变量为 True,则不允许登录,清除 Tkinter GUI,然后将变量设置为 None(像这样):

if PasswordMinLengthVar == True:
   Don't allow access
   Clear GUI
   PasswordMinLengthVar == None

然后登录应该回到登录屏幕,用户可以再试一次。

【讨论】:

  • 太棒了!你做了什么来解决它?
  • 发生的事情非常有趣。我将 if len(email) or len(password) 语句更改为 if len(email) 并且它开始了去工作。很有意思。我还将整个 dict 和 pickling 语句包装在 if 语句的 else 块中。
  • 现在我真的很愚蠢,因为我没有看到。它不起作用的原因是解释器认为您只是试图将其应用于 len(password) 而不是两者。它只是认为 len(email) 是一个空白条件,这可能是它给你一个错误的原因。我的解决方案效率较低但仍然有效,因为我指定即使只有一个值小于 3 个字符,变量更改仍会发生。
  • 您的解决方案仍然很有帮助,我什至觉得我错过了它。感谢您解释 为什么 对此,len() 进一步理解。
猜你喜欢
  • 1970-01-01
  • 2016-03-31
  • 1970-01-01
  • 1970-01-01
  • 2023-01-26
  • 2012-04-11
  • 2017-10-02
  • 2015-06-04
  • 1970-01-01
相关资源
最近更新 更多