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

如何将按钮放置在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 22:42:38