简体   繁体   English

Tkinter:无法让网格几何管理器使用框架

[英]Tkinter: Cant get the grid geometry manager to work with frames

I'm new to Tkinter and trying to create a program where I can display a few frames like this: A rough sketch of what I want where all the different colours are different frames.我是 Tkinter 的新手,并试图创建一个程序,我可以在其中显示一些这样的帧:我想要的粗略草图,其中所有不同的颜色都是不同的帧。

my current code looks like this:我当前的代码如下所示:

import tkinter as tk

root = tk.Tk()
root.geometry('700x400')


class Creation(tk.Frame):

    def __init__(self, master, **kwargs):
        super().__init__(master, **kwargs)
        self.master = master

        self.master.title('Creation')
        self.frame_test()

    def frame_test(self):
        info_frame = tk.Frame(bg='Green')
        file_frame = tk.Frame(bg='Grey')
        data_frame = tk.Frame(bg='Gold')
        button_frame = tk.Frame(bg='Red')

        self.rowconfigure(0, weight=5)
        for i in range(1, 13):
            self.rowconfigure(i, weight=1)
        for j in range(6):
            self.columnconfigure(j, weight=1)

        info_frame.grid(column=0, columnspan=6, row=0)
        file_frame.grid(column=0, columnspan=6, row=1)
        data_frame.grid(column=0, columnspan=6, rowspan=10, row=2)
        button_frame.grid(column=0, columnspan=6, row=12)



program = Creation(root)
program.grid()
program.mainloop()

But every time I run the code, all I get is an empty tkinter window.但是每次我运行代码时,我得到的只是一个空的 tkinter window。 Can anyone explain what is wrong with this code?谁能解释这段代码有什么问题?

First you need to parse the positional argument master=self to get it on your frame, otherwise it will be on the root_window.首先,您需要解析位置参数master=self以将其放在您的框架上,否则它将位于 root_window 上。 Then you need to give the optional arguments width and height how you like, otherwise the fell to 0 width and 0 height, which is nothing as long as they dosent contain something.然后你需要给可选的 arguments宽度高度你喜欢的,否则下降到 0 宽度和 0 高度,只要它们不包含任何东西,这没什么。

import tkinter as tk

root = tk.Tk()
root.geometry('700x400')


class Creation(tk.Frame):

    def __init__(self, master, **kwargs):
        super().__init__(master, **kwargs)
        self.master = master

        self.master.title('Creation')
        self.frame_test()

    def frame_test(self):
        info_frame = tk.Frame(self,bg='Green',width=100,height=100)
        file_frame = tk.Frame(self,bg='Grey')
        data_frame = tk.Frame(self,bg='Gold')
        button_frame = tk.Frame(self,bg='Red')

        self.rowconfigure(0, weight=5)
        for i in range(1, 13):
            self.rowconfigure(i, weight=1)
        for j in range(6):
            self.columnconfigure(j, weight=1)

        info_frame.grid(column=0, columnspan=6, row=0)
        file_frame.grid(column=0, columnspan=6, row=1)
        data_frame.grid(column=0, columnspan=6, rowspan=10, row=2)
        button_frame.grid(column=0, columnspan=6, row=12)



program = Creation(root)
program.grid()
program.mainloop()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM