几何经理
Tkinter 有三种几何管理机制:place
,pack
和 grid
。
place
管理器使用绝对像素坐标。
pack
管理器将小部件放入 4 个方面之一。新窗口小部件放置在现有窗口小部件旁边。
grid
管理器将小部件放入一个类似于动态调整大小的电子表格的网格中。
地点
widget.place
最常用的关键字参数如下:
x
,小部件的绝对 x 坐标y
,小部件的绝对 y 坐标height
,小部件的绝对高度width
,小部件的绝对宽度
使用 place
的代码示例:
class PlaceExample(Frame):
def __init__(self,master):
Frame.__init__(self,master)
self.grid()
top_text=Label(master,text="This is on top at the origin")
#top_text.pack()
top_text.place(x=0,y=0,height=50,width=200)
bottom_right_text=Label(master,text="This is at position 200,400")
#top_text.pack()
bottom_right_text.place(x=200,y=400,height=50,width=200)
# Spawn Window
if __name__=="__main__":
root=Tk()
place_frame=PlaceExample(root)
place_frame.mainloop()
包
widget.pack
可以使用以下关键字参数:
expand
,是否填补父母留下的空间fill
,是否扩展以填充所有空间(NONE(默认),X,Y 或 BOTH)side
,反对的一面(TOP(默认),BOTTOM,LEFT 或 RIGHT)
格
widget.grid
最常用的关键字参数如下:
row
,小部件的行(默认最小的未占用)rowspan
,小部件跨越的 colums 数量(默认为 1)column
,小部件的列(默认为 0)columnspan
,小部件跨越的列数(默认为 1)sticky
,如果网格单元格大于它,则放置小部件(N,NE,E,SE,S,SW,W,NW 的组合)
行和列是零索引。行增加下降,列增加正确。
使用 grid
的代码示例:
from tkinter import *
class GridExample(Frame):
def __init__(self,master):
Frame.__init__(self,master)
self.grid()
top_text=Label(self,text="This text appears on top left")
top_text.grid() # Default position 0, 0
bottom_text=Label(self,text="This text appears on bottom left")
bottom_text.grid() # Default position 1, 0
right_text=Label(self,text="This text appears on the right and spans both rows",
wraplength=100)
# Position is 0,1
# Rowspan means actual position is [0-1],1
right_text.grid(row=0,column=1,rowspan=2)
# Spawn Window
if __name__=="__main__":
root=Tk()
grid_frame=GridExample(root)
grid_frame.mainloop()