如何使Tkinter中的退出按钮置于其他选项按钮下方?
解决Tkinter退出按钮布局问题
问题根源在于你把三个按钮直接放在同一个frame里,btn1左对齐、btn2右对齐后,它们占据了frame的水平宽度,剩余的垂直空间集中在中间区域,导致exit_btn用side=tk.BOTTOM时只能在这个中间空间里靠下,看起来像在两个按钮中间。
解决方法是把btn1和btn2放到一个子frame中,让这个子frame和退出按钮在主frame里垂直排列:
import tkinter as tk root = tk.Tk() root.title("Window title") root.config(bg='#FFFFFF') frame = tk.Frame( master=root, bg='#FFFFFF' ) frame.pack(side=tk.TOP, fill=tk.BOTH, expand=True) label = tk.Label( master=frame, text="Select an option", height=1, width=40, bg='#FFFFFF' ) label.pack(side=tk.TOP, fill=tk.BOTH, pady=4) # 新增子frame来容纳两个选项按钮 btn_frame = tk.Frame(master=frame, bg='#FFFFFF') btn_frame.pack(side=tk.TOP, fill=tk.BOTH, pady=4) btn1 = tk.Button( master=btn_frame, text="Option 1", height=1, width=20, bg='#FFFFFF' ) btn1.pack(side=tk.LEFT, fill=tk.BOTH, padx=4) btn2 = tk.Button( master=btn_frame, text="Option 2", height=1, width=20, bg='#FFFFFF' ) btn2.pack(side=tk.RIGHT, fill=tk.BOTH, padx=4) exit_btn = tk.Button( master=frame, text="Exit", height=1, width=5, bg='#FFFFFF' ) exit_btn.pack(side=tk.TOP, fill=tk.BOTH, padx=4, pady=4) root.mainloop()
关键改动点:
- 新增
btn_frame作为两个选项按钮的容器,将其pack到主frame的顶部 - 把
btn1和btn2的父容器改成btn_frame - 退出按钮直接在主frame里垂直排列,此时用
side=tk.TOP或side=tk.BOTTOM都能实现上下布局(根据需求调整即可)
内容的提问来源于stack exchange,提问作者AShadedBlobfish
相关产品推荐
相关产品推荐

