Tkinter按钮位置异常求助:grid布局无法移动按钮
解决Tkinter菜单栏位置问题
你用普通Button加grid布局的方式不对,导致设置row和column没效果,原因是grid布局会自动压缩空行空列的高度/宽度——你设置row=10,但前面的1-9行没有任何控件,高度会被压缩成0,所以按钮实际还是显示在顶部位置。
而且多数程序的File、Edit这类选项不是普通按钮,而是Tkinter专门提供的Menu组件,这才是实现标准菜单栏的正确方式,示例代码如下:
from tkinter import * root = Tk() root.geometry("300x250") root.title("D&D Tracker") # 创建主菜单栏 main_menu = Menu(root) root.config(menu=main_menu) # 创建File子菜单 file_menu = Menu(main_menu, tearoff=0) file_menu.add_command(label="New", command=lambda: print("New file")) file_menu.add_command(label="Open", command=lambda: print("Open file")) file_menu.add_separator() # 添加分隔线 file_menu.add_command(label="Exit", command=root.destroy) # 将File子菜单添加到主菜单栏 main_menu.add_cascade(label="File", menu=file_menu) # 同理添加Edit、View等菜单 edit_menu = Menu(main_menu, tearoff=0) edit_menu.add_command(label="Cut", command=lambda: print("Cut")) edit_menu.add_command(label="Copy", command=lambda: print("Copy")) edit_menu.add_command(label="Paste", command=lambda: print("Paste")) main_menu.add_cascade(label="Edit", menu=edit_menu) view_menu = Menu(main_menu, tearoff=0) view_menu.add_command(label="Toggle Toolbar", command=lambda: print("Toggle toolbar")) main_menu.add_cascade(label="View", menu=view_menu) root.mainloop()
如果非要用普通按钮模拟菜单栏,也可以用pack布局将按钮放在顶部左侧,多个按钮依次排列,示例如下:
from tkinter import * root = Tk() root.geometry("300x250") root.title("D&D Tracker") # 用pack布局将按钮放在顶部左侧,设置间距 file_btn = Button(root, text="File", command=root.destroy) file_btn.pack(side=LEFT, padx=2) edit_btn = Button(root, text="Edit") edit_btn.pack(side=LEFT, padx=2) view_btn = Button(root, text="View") view_btn.pack(side=LEFT, padx=2) root.mainloop()
内容的提问来源于stack exchange,提问作者phdjacoby
相关产品推荐
相关产品推荐

