You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Tkinter开发登录应用窗口显示异常:用户名密码标签提前显示

问题原因

  • 按钮绑定回调函数时错误添加了括号:command=login()、command=register()的写法会让程序在初始化阶段就直接执行这两个函数,而非点击按钮时才触发
  • 注册逻辑里的控件没有指定父窗口:register函数中创建的Label、Entry默认挂载到了全局主窗口screen上,所以相关内容会直接显示在主界面,而非弹出的注册窗口
  • 额外小问题:注册窗口的输入框没有调用pack()方法,就算绑定了正确父窗口也无法正常显示

修复后完整代码

from tkinter import *

def login():
    print('Login Started')

def register():
    screen1 = Toplevel(screen)
    screen1.title('Register')
    screen1.geometry('300x250')
    
    username = StringVar()
    password = StringVar()
    
    # 给所有控件指定父窗口为弹出的注册窗口screen1
    Label(screen1, text = 'Username * ').pack()
    Entry(screen1, textvariable = username).pack()
    Label(screen1, text = 'Password * ').pack()
    Entry(screen1, textvariable = password).pack()

def main_screen():
    global screen
    screen = Tk()
    screen.geometry('300x250')
    screen.title('notes')
    Label(text = "Notes 1.0", bg = "grey", width = '300', height = '2', font = ("Calibri", 13)).pack()
    Label(text = '').pack()
    # 回调函数去掉括号,仅传入函数名即可
    Button(text = 'Login', width = '30', height = '2', command = login).pack()
    Label(text = '').pack()
    Button(text = 'Register', width = '30', height = '2', command = register).pack()
    
    screen.mainloop()
    
main_screen()

内容的提问来源于stack exchange,提问作者Ayden Quinn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 20:54:05