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

Tkinter开发问题:无法在二级窗口添加新按钮并打开新窗口

解决Tkinter第二个窗口新增按钮打开新窗口的问题

修改后的完整代码

from tkinter import*

main_window=Tk()
main_window.geometry('500x500')

def first_window():
    def second_window():
        # 销毁主窗口的初始组件
        main_window_label.destroy()
        main_window_button.destroy()
        
        # 第二个窗口的标签
        second_window_label=Label(main_window,text='choose one section',font=('Times_New_Roman',25))
        second_window_label.pack(pady=20)
        
        # 打开新窗口的函数
        def open_new_window():
            # 创建独立的新窗口
            new_win = Toplevel(main_window)
            new_win.title("新窗口")
            new_win.geometry("300x200")
            # 新窗口的内容
            Label(new_win, text="这是新打开的窗口", font=('Times_New_Roman',18)).pack(pady=50)
            Button(new_win, text="关闭窗口", command=new_win.destroy, font=('Times_New_Roman',14)).pack()
        
        # 返回第一个界面的函数,销毁第二个窗口的所有组件
        def back():
            second_window_label.destroy()
            second_window_back_btn.destroy()
            open_new_win_btn.destroy()
            first_window()
        
        # 新增打开新窗口的按钮
        open_new_win_btn = Button(main_window, text="打开新窗口", font=('Times_New_Roman',20), command=open_new_window, activebackground='green')
        open_new_win_btn.pack(pady=10)
        
        # 返回按钮
        second_window_back_btn=Button(main_window,text='back',font=('Times_New_Roman',25),command=back,activebackground='red')
        second_window_back_btn.pack(side=BOTTOM)
     
    # 第一个窗口的组件
    main_window_label=Label(main_window,text='welcome to our _______',font=('Times_New_Roman',25))
    main_window_label.pack(pady=20)
    main_window_button=Button(main_window,text='next',font=('Times_New_Roman',25),command=second_window,activebackground='blue')
    main_window_button.pack(side=BOTTOM)

first_window()
main_window.mainloop()

关键修改点说明

  • 新增打开新窗口的按钮:在second_window函数内添加open_new_win_btn,点击后触发open_new_window函数
  • 创建独立新窗口:用Toplevel()生成依附于主窗口的独立窗口,它可以单独显示、关闭,不会干扰主窗口的界面切换逻辑
  • 完善返回逻辑:返回第一个界面时,销毁新增的open_new_win_btn,避免再次进入第二个窗口时出现重复组件
  • 细节优化:修正原代码中welcometo的拼写错误,添加pady参数优化组件间距

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 09:25:44