【问题标题】:How to add an Frame inside another frame in Tkinter?如何在 Tkinter 的另一个框架内添加一个框架?
【发布时间】:2018-10-31 18:26:07
【问题描述】:

我正在尝试使用 tkinter 在另一个框架内添加一个框架,但没有添加该框架:

代码:

lframe=Frame(r,width=1000,height=650,relief='raise',bd=8).pack(side=LEFT)

rframe=Frame(r,width=350,height=650,relief='raise',bd=8).pack(side=RIGHT)



lframe1=Frame(lframe,width=1000,height=100,bd=8,relief='raise').pack(side= TOP)

lframe2=Frame(lframe,width=1000,height=55,bd=8,relief='raise').pack(side=TOP)

rframe1=Frame(rframe,width=350,height=215,relief='raise',bd=8).pack(side=TOP)

rframe2=Frame(rframe,width=350,height=415,relief='raise',bd=8).pack(side=TOP)

r.mainloop()

它显示以下输出

【问题讨论】:

    标签: python user-interface tkinter frame


    【解决方案1】:

    是什么导致了您的问题?

    lframe 值得None 并且不引用您创建的框架实例。为什么会这样?

    因为pack()gird()place() 布局管理器是不返回任何内容的函数。所以当你写的时候:

    lframe=Frame(r,width=1000,height=650,relief='raise',bd=8).pack(side=LEFT)
    

    你显然没有从pack(side=LEFT)得到任何东西

    如何解决您的问题?

    每当您创建小部件时,只需遵循此原则:先创建然后定位(在您的情况下,您同时创建和定位小部件)。我个人将这个原则称为The SaYa idiom。这意味着上一行代码应该写成如下:

    lframe=Frame(r,width=1000,height=650,relief='raise',bd=8)
    lframe.pack(side=LEFT)
    

    将此习惯用法应用于您的所有小部件,这样可以避免一些麻烦。

    【讨论】:

      猜你喜欢
      • 2020-07-02
      • 2015-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-21
      • 1970-01-01
      相关资源
      最近更新 更多