在Tkinter的儿童中打包和网格

时间:2019-08-16 12:06:44

标签: python tkinter

我知道您不能在同一主机中混用tkinter的grid()和pack()方法。但是,我的理解是,即使这两个框架共享同一个父对象,在一个框架内使用pack并在另一个框架内使用网格也是有效的吗?这是我打包到主根目录上的框架的代码,为什么我收到有关混合包和网格的错误?抱歉,如果我只是盲目地错过了混合包和网格的规则。

Class Login(tk.Frame): 
    def __init__(self, master):
        super().__init__(master)
        self.config()

        rightFrame = tk.Frame(self).pack(side='right') #Using PACK
        leftFrame = tk.Frame(self).pack(side='left') #Using GRID

        # RIGHT SIDE #

        self.photo = tk.PhotoImage(file='temp.png')
        label = tk.Label(rightFrame, image=self.photo)
        label.pack(side='right')

        # LEFT SIDE #

        label = tk.Label(leftFrame, text="Grade Predictor")
        label.config(font=("Courier 22 bold"))
        label.grid(row=0, column=0)

        self.usernameBox = tk.Entry(leftFrame)
        self.usernameBox.grid(row=1, column=0)       

        self.pack(fill='both')

1 个答案:

答案 0 :(得分:2)

您创建的左右框架如下:

rightFrame = tk.Frame(self).pack(side='right')

,当None返回rightFrame时,将pack()分配给None

如果将它们创建为:

rightFrame = tk.Frame(self)
rightFrame.pack(side='right')

它工作正常。