[英]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.