Python Tkinter框架的新几何体问题?

Python Tkinter框架的新几何体问题?,python,user-interface,tkinter,frame,Python,User Interface,Tkinter,Frame,我对tkinter和python非常陌生。这就是我的代码的外观: import tkinter as tk main = tk.Tk() # Window size main.geometry("400x700") main.resizable(0, 0) # Window position w = main.winfo_reqwidth() h = main.winfo_reqheight() ws = main.winfo_screenwidth() hs = main.winfo_sc

我对tkinter和python非常陌生。这就是我的代码的外观:

import tkinter as tk

main = tk.Tk()
# Window size
main.geometry("400x700")
main.resizable(0, 0)

# Window position
w = main.winfo_reqwidth()
h = main.winfo_reqheight()
ws = main.winfo_screenwidth()
hs = main.winfo_screenheight()
x = (ws/2) - (w/2)
y = (hs/2) - (h/2)
main.geometry('+%d+%d' % (x, y))

fr1 = tk.Frame(main, borderwidth=2, relief="solid", bg = "#271ee3", width=400, height=50)
fr2 = tk.Frame(main, borderwidth=2, relief="solid", bg = "#0d9467", width=200, height=650)
fr3 = tk.Frame(main, borderwidth=2, relief="solid", bg = "#3e1854", width=200, height=650)

fr1.pack()
fr2.pack(side="left")
fr3.pack(side="right")

main.mainloop()
通过这个代码,我得到了

到目前为止还不错。添加此代码时出现问题:

# Label
l = tk.Label(fr2, text="Heyho")
l.grid(row=0, column=0)
现在看来


我的目标是得到一个窗口,在第一帧(fr1)中有一个按钮,该按钮具有与fr1相同的几何体。在fr2和fr3中,我希望彼此之间有几个标签。fr2和fr3中的“我的标签”应具有列0,但具有升序行(0,1,2,3…)。我该怎么做呢?

它会根据标签的大小自动调整框架的大小,这样你们就不会看到隐藏在标签后面的绿色背景,也不会看到主窗口的灰色背景

若在主窗口中添加其他较长的标签和红色背景,则可以更好地看到它

如果你加上

fr2.grid_propagate(False)
fr2.grid_columnconfigure(0, weight=1)
然后框架将保持其大小

但网格仍然存在问题,它没有使用帧的完整大小,并且不能居中或向右对齐

如果你加上

fr2.grid_propagate(False)
fr2.grid_columnconfigure(0, weight=1)
若并没有其他列,列0将尝试使用全尺寸,标签将在单元格中居中

如果你使用

sticky='we' 
grid()
中,标签将填充单元格



它会根据标签的大小自动调整框架的大小,这样你们就不会看到隐藏在标签后面的绿色背景,也不会看到主窗口的灰色背景。如果添加
fr2.grid\u propagate(False)
则不会调整帧大小。谢谢,这是我的问题!但是现在,当我改变l2的row=2时,没有任何东西会改变。我想让l1在第0行。第1行应该是空的,第2行我想有另一个标签。空的行/列的高度/宽度为零-所以你们看不到区别。您必须在第1行中放置具有一定大小的元素,或者您必须为第1行设置最小高度-
f1.grid_rowconfig(1,minsize=…)
您还可以在第0行中添加
pady
以获得距离-它可以是
pady=(顶部,底部)
pady=两者
-
l1.grid(行=0,列=0,粘滞的pady=(0,5))
l1.grid(行=0,列=0,粘滞=we',pady=5)