当前位置: 首页 > 知识库问答 >
问题:

Tkinter mainloop中断,messagebox不断弹出[重复]

柴俊捷
2023-03-14
class StartUp():
    def __init__(self):
        pass

    def verify(self):
        username = ("s")
        password = ("s")
        
        usernameEntry = usernameVar.get()
        passwordEntry = passVar.get()

        start = StartUp()

        if usernameEntry == username and passwordEntry == password:
            start.login() 
        else: 
            #messagebox.showerror("Error","Wrong Credentials")

            
    def login(self):
        #Create a window
        global usernameVar, passVar
        
        verify = StartUp()
        
        window = Tk()
        window.title("Login")
            
        userPassLabel = Label(window, font="Helvetica 18 bold", text="Royal Mail")
        userPassLabel.grid(row=0, column=0, sticky=W)

        usernameVar = StringVar()
        usernameLabel = Label(window, font="Arial", text="Username:")
        usernameLabel.grid(row=1, column=0, sticky=W)
        usernameEntry= Entry(window, width=30, bg="light blue",textvariable = usernameVar, )
        usernameEntry.grid(row=1, column=1, sticky=W)
            
        passVar = StringVar()
        passLabel = Label(window, font="Arial", text="Password:")
        passLabel.grid(row=2, column=0, sticky=W)
        passEntry= Entry(window, width=30, bg="light blue",textvariable = passVar, show ="●")
        passEntry.grid(row=2, column=1, sticky=W)
        
        b1= Button(window, text="Enter", command=verify.verify())
        b1.grid(row=3, column=0, sticky=W)

        window.mainloop()


start = StartUp()
start.login()

代码似乎不起作用。消息框就会弹出。然后enter按钮就不工作了。不确定出了什么问题。我对OOP很陌生,所以不确定这是否与此有关。

另外一个问题是,我如何能够将一个变量从一个窗口/类的输入框传送到另一个窗口/类?global是一个可行的选项,还是有更好的方法可以从输入框中使用.get()。

谢谢你的帮助

共有1个答案

蓟俊杰
2023-03-14

当您使用()时,您正在立即调用该函数。并且当您将()与按钮一起使用时,它破坏了拥有按钮本身的目的。因此删除括号()

b1 = Button(window, text="Enter", command=verify.verify)

当调用该函数时,条目中的值为空,因此会触发else

 类似资料:
  • 使用 PHPStorm,我试图忽略工作区.xml每次我尝试进行 git 提交时都会弹出该。 我的<代码>。gitignore看起来像: 因为在提交文件的某个时刻,我还执行了: ,然后提交删除,推送到一个裸存储库。 但是当我在项目中进行更改时,该文件会不断弹出。 知道我错过了什么吗?

  • 模拟系统的消息提示框而实现的一套模态对话框组件,用于消息提示、确认消息和提交内容。 tip 从场景上说,MessageBox 的作用是美化系统自带的 alert、confirm 和 prompt,因此适合展示较为简单的内容。如果需要弹出较为复杂的内容,请使用 Dialog。 消息提示 当用户进行操作时会被触发,该对话框中断用户操作,直到用户确认知晓后才可关闭。 调用$alert方法即可打开消息提示

  • MessageBox 弹框 模拟系统的消息提示框而实现的一套模态对话框组件,用于消息提示、确认消息和提交内容。 tip 从场景上说,MessageBox 的作用是美化系统自带的 alert、confirm 和 prompt,因此适合展示较为简单的内容。如果需要弹出较为复杂的内容,请使用 Dialog。 消息提示 当用户进行操作时会被触发,该对话框中断用户操作,直到用户确认知晓后才可关闭。 调用$a

  • 我知道bash不支持长除法,但它来了。我查找了一个bash变通方法,给我一个部门的假定数值。例如,这是我得到的: 我执行代码,输出总是0。我认为将表达式乘以100可以解决这个问题,但显然不行。有人能告诉我这是怎么回事吗?

  • 我正面临使用Spring Cloud Resilience 4j的断路器实现的问题。 在一些教程之后,我尝试在项目中添加必要的依赖项。此外,尝试添加配置,但电路仍然没有打开,并且没有调用回退方法。 对于用例,我正在从我的服务调用外部 API,如果该外部 API 关闭,那么在几次调用后,我需要启用断路器。 请从不同的文件中找到代码片段。 我是断路器模式的新手。我们将非常感谢您的帮助。 pom.xml

  • 我可以看到,我可以使用以下代码以编程方式将状态设置为强制打开:CircuitBreaker强制打开状态 但是有没有一种方法可以设置一个属性,在应用程序启动时立即将状态设置为此,以便可以与测试一起使用呢?