如何将按钮放置在tkinter的灰色mainframe框架内?
问题原因
你代码里的核心错误是把pack()的返回值赋值给了self.mainframe。tkinter的布局方法(pack()/grid()/place())返回的都是None,所以self.mainframe实际是None,按钮的master设为None时,默认会绑定到根窗口self.root,自然不会出现在灰色框架里。
修正后的代码
import tkinter class theUI(): def __init__(self): self.root = tkinter.Tk() self.root.geometry("500x600") # 先创建Frame对象,再单独调用pack方法 self.mainframe = tkinter.Frame(self.root, height=300, width=400, bg="gray") self.mainframe.pack(side="left") # 禁止Frame根据子组件自动调整大小,保留设置的宽高(可选) self.mainframe.pack_propagate(0) # 按钮的master现在是正确的Frame对象 tkinter.Button(master=self.mainframe, text="Rock").pack(side="left", padx=20, pady=100) tkinter.Button(master=self.mainframe, text="Paper").pack(side="left", padx=20, pady=100) tkinter.Button(master=self.mainframe, text="Scissors").pack(side="left", padx=20, pady=100) self.root.mainloop() game = theUI()
额外说明
- 如果不想固定Frame的宽高,可以去掉
pack_propagate(0),Frame会根据按钮的大小自动调整,灰色区域会包裹住按钮。 - 给按钮加
padx/pady参数可以调整按钮之间的间距和上下边距,让布局更美观。
内容的提问来源于stack exchange,提问作者hopp hipp
相关产品推荐
相关产品推荐

