如何从不同Python文件操作同一个Tkinter窗口?
核心思路是将main.py中的root窗口实例传递给menu.py的函数,在menu.py中完成菜单栏的创建与绑定。
main.py 代码
import tkinter as tk import menu if __name__ == "__main__": root = tk.Tk() root.title("带菜单栏的主窗口") # 调用menu模块的函数为root添加菜单栏 menu.setup_main_menu(root) root.mainloop()
menu.py 代码
import tkinter as tk def setup_main_menu(parent_root): # 创建主菜单栏 main_menubar = tk.Menu(parent_root) # 创建「文件」子菜单 file_submenu = tk.Menu(main_menubar, tearoff=0) file_submenu.add_command(label="打开", command=lambda: print("执行打开操作")) file_submenu.add_command(label="保存", command=lambda: print("执行保存操作")) file_submenu.add_separator() file_submenu.add_command(label="退出", command=parent_root.quit) main_menubar.add_cascade(label="文件", menu=file_submenu) # 创建「编辑」子菜单 edit_submenu = tk.Menu(main_menubar, tearoff=0) edit_submenu.add_command(label="复制", command=lambda: print("执行复制操作")) edit_submenu.add_command(label="粘贴", command=lambda: print("执行粘贴操作")) main_menubar.add_cascade(label="编辑", menu=edit_submenu) # 将菜单栏绑定到传入的主窗口 parent_root.config(menu=main_menubar)
关键说明
- 把main.py的
root作为参数传入menu.py的函数,直接操作这个窗口实例 tearoff=0用于关闭子菜单的可分离功能(默认允许拖出,一般场景不需要)- 可根据需求添加更多子菜单或命令,替换
command参数的逻辑即可
内容的提问来源于stack exchange,提问作者Sandeep Kumar
相关产品推荐
相关产品推荐

