Python 为什么我的grid\u columnconfigure不能在这个tkinter代码上工作?

Python 为什么我的grid\u columnconfigure不能在这个tkinter代码上工作?,python,tkinter,Python,Tkinter,我刚开始学习tkinter和im关于网格管理的知识。 我将a框架设置为在第0列上有1个权重,因此我希望将label1拉伸到框架的末端,然后在第1列上添加label2,其长度与其文本大小相关 预期产出: 输出: 这是我的密码: import tkinter as tk class App(tk.Tk): def __init__(self, *args, **kwargs): tk.Tk.__init__(self, *args, *kwargs)

我刚开始学习tkinter和im关于网格管理的知识。 我将a框架设置为在第0列上有1个权重,因此我希望将label1拉伸到框架的末端,然后在第1列上添加label2,其长度与其文本大小相关

预期产出:

输出:

这是我的密码:

import tkinter as tk


class App(tk.Tk):

    def __init__(self, *args, **kwargs):
        tk.Tk.__init__(self, *args, *kwargs)

        container = tk.Frame(self)
        container.pack(side="top", fill="both", expand=True)
        container.grid_rowconfigure(0, weight=1)
        container.grid_columnconfigure(0, weight=1)

        frame_list = (MenuFrame,
                     )

        self.geometry("1024x768")
        self.frames = {}

        for F in frame_list:
            page_name = F.__name__
            frame = F(parent=container, controller=self)
            self.frames[page_name] = frame
            frame.grid(row=0, column=0, sticky="nsew")

        self.show_frame("MenuFrame")

    def show_frame(self, page_name):
        frame = self.frames[page_name]
        frame.tkraise()


class MenuFrame(tk.Frame):

    def __init__(self, parent, controller):

        tk.Frame.__init__(self, parent)
        self.controller = controller
        self.create_widgets(self)

    def create_widgets(self, parent):

        frame = tk.Frame(self, bg="white")
        frame.grid_columnconfigure(0, weight=1)
        frame.grid_rowconfigure(0, weight=1)

        label1 = tk.Label(frame, text="Label one", bg="red")
        label2 = tk.Label(frame, text="Label two", bg="blue", fg="white")

        frame.grid(row=0, column=0, sticky="nsew")
        label1.grid(row=0, column=0)
        label2.grid(row=0, column=1)
  

if __name__ == "__main__":
    app = App()
    app.mainloop()

您正在为
正确配置权重。但是,
frame
未正确配置以填充窗口。正因为如此,它的宽度几乎不足以容纳两个标签,因此
重量
没有任何影响

由于
frame
似乎是类
MenuFrame
中唯一的小部件,我将使用
pack
而不是
grid
,因为它只需要一行:

frame.pack(fill="both", expand=True)
如果您喜欢使用
网格
,则还需要为其父级配置权重

self.grid_rowconfigure(0, weight=1)
self.grid_columnconfigure(0, weight=1)
frame.grid(row=0, column=0, sticky="nsew")

@Abrar感谢您的评论,实际上我正在寻找一种使用权重拉伸label1的方法,而不是通过width参数手动更改其宽度。@Abrar,不完全是,有关我尝试执行的操作的更多信息,请查看此问题!基本上,如果初始窗口宽度为1000,每个标签宽度为100,我希望labelone覆盖900,然后放置labeltwo覆盖100。每次更改初始窗口宽度时,它都是相对的。@Abrar基本帧。@Abrar它被用于第37行:tk.frame.\uuu init\uuu(self,parent)用作MenuFrame的父帧,因此在创建MenuFrame时,它将继承基础帧的质量initialized@Abrar一旦我解决了这个问题,我就打算用它,所以我认为这不是重点