Tkinter消息框陷入循环

时间:2018-07-07 21:26:46

标签: python tkinter

我刚刚开始使用tkinter在python中制作GUI。我制作了一个可以生成随机密码的程序……它仍然缺少诸如保存密码和查看保存的密码之类的东西。因此,问题是我添加了一个错误处理,用户将提供密码的长度,以便我们只获取整数而不是字符串...弹出错误对话框后,除非我从pycharm终止,否则它将不会关闭。

def error(self):
    self.messagebox.showerror("Oops!","Invalid input Integers only!")
    l = int(len(entr1.get()))
    while True:
        try:
            entr1.update()
            lt = abs(int(entr1.get()))
            break
        except ValueError:
            entr1.delete(0,l)
            entr1.update()
            self.error()

上面是我的错误处理例程,entr1是输入框,上面是将显示的错误消息框。 请告诉我我该如何解决...预先致谢!

1 个答案:

答案 0 :(得分:0)

修复:使用if语句代替True循环。

def error(self):
self.messagebox.showerror("Oops!","Invalid input Integers only!")


def gen(self):
    try:
        entr1.update()
        lt = abs(int(entr1.get()))
        suc = 1
    except:
        entr1.delete(0, END)
        entr1.update()
        self.error()
        suc = 0
    if suc == 1:
        tex1.delete('1.0', END)
        tex1.update()
        for x in range(21):
            password = ""
            for i in range(lt):
                randa = self.random.choice(self.al)
                randn = str(self.random.randint(0,9))
                rand = [randa, randn]
                password += self.random.choice(rand)
            tex1.insert("1.0", "{}\n".format(password))

成功变量的suc表示错误处理,仅当suc = 1时执行程序,al是包含所有字母的列表,tex1是文本字段