Tkinter:无法让网格几何图形管理器处理框架



我是Tkinter的新手,正在尝试创建一个程序,在该程序中我可以显示如下几帧:我想要什么的粗略草图其中所有不同的颜色都是不同的帧。

我当前的代码如下:

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()

但每次运行代码时,我得到的只是一个空的tkinter窗口。有人能解释一下这个代码出了什么问题吗?

首先需要解析位置参数master=self才能将其放在框架上,否则它将放在root_window上。然后,你需要按照你喜欢的方式给可选参数widthheight,否则就会降到0 width和0 height,只要它们不包含什么,就没什么。

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()

相关内容

最新更新