【问题标题】:Frame within a Frame in TKinter unexpected resultsTKinter 意外结果中的帧中帧
【发布时间】:2020-01-16 16:58:41
【问题描述】:

我试图在一个框架内放置 2 个框架,而框架又放置在 TKinter 窗口上。我希望下面的代码在一个窗口上产生 4 个相等的帧,然后在第一帧内放置 2 个相等的帧。我得到的是四个相等的帧,前两个帧每个包含一个帧。

我正在调用我希望将两个较小/相等的框架放入的框架,但我似乎正在获取窗口参考。从我读过的内容来看,我相信框架可以放在框架内。

from tkinter import *

class list_frame (Frame):
    def __init__(self,the_window):
        super().__init__()
        self["height"]=50
        self["width"]=200
        self["relief"]=RAISED
        self["bd"]=8
        self["bg"]="red"

class little_frame (Frame):
    def __init__(self,the_frame):
        super().__init__()
        self["height"]=20
        self["width"]=50
        self["relief"]=RAISED
        self["bd"]=8
        self["bg"]="black"

my_window = Tk()
my_window.geometry("400x300+0+0")

frame_a = list_frame(my_window)
frame_a.grid(row=0, column=0)
frame_b = list_frame(my_window)
frame_b.grid(row=0, column=1)
frame_c = list_frame(my_window)
frame_c.grid(row=1, column=0)
frame_d = list_frame(my_window)
frame_d.grid(row=1, column=1)

frame_e = little_frame(frame_a)
frame_e.grid(row=0, column=0)
frame_f = little_frame(frame_a)
frame_f.grid(row=0, column=1)

my_window.mainloop()

我确信这是一个愚蠢的简单错误,但我没有看到它,重复的会话并没有让它跳出来。

【问题讨论】:

  • little_frame 中,您没有将the_frame 参数传递给超类,因此这些框架默认创建为根的子级。

标签: python python-3.x tkinter


【解决方案1】:

您没有将父级传递给超类__init__。因此,所有框架都是根窗口的子级。

你需要这样做:

class list_frame (Frame):
    def __init__(self,the_window):
        super().__init__(the_window)
        ...

class little_frame (Frame):
    def __init__(self,the_frame):
        super().__init__(the_frame)
        ...

由于框架不关心包含的小部件是窗口、框架还是任何其他小部件,最好将the_windowthe_frame 重命名为masterparent

class list_frame (Frame):
    def __init__(self, master):
        super().__init__(master)
        ...

class little_frame (Frame):
    def __init__(self, master):
        super().__init__(master)
        ...

【讨论】:

  • 谢谢你,成功了。
猜你喜欢
  • 2022-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-17
  • 1970-01-01
  • 1970-01-01
  • 2020-09-20
相关资源
最近更新 更多