python中tkinter使用,python tkinter grid布局
Tkinter教程的网格
#Tkinter参考中最推荐的布局。实现机制是在逻辑上将小部件分成表,只需将所需的小部件放在指定的位置。
1.第一个网格示例
#-*-编码:cp936-*-
#使用网格来布置组件
fromTkinterimport *
root=Tk()
#创建两个标签
lb1=Label(root,text=Hello )
lb2=Label(root,text=Grid )
lb1.grid()
lb2.grid()
root.mainloop()
#grid有两个最重要的参数,用来指定放置组件的位置,一个是row,一个是column。如果未指定row,组件将被放置在第一个可用的行上;如果未指定column,将使用第一列。
2.使用行和列来指定位置“”
#-*-编码:cp936-*-
#使用网格布置组件
fromTkinterimport *
root=Tk()
#创建两个标签
lb1=Label(root,text=Hello )
lb2=Label(root,text=Grid )
lb1.grid()
#将lb2指定为第一行(从索引0开始)和第二列(从索引0开始)
lb2.grid(行=0,列=1)
root.mainloop()
#grid有两个最重要的参数,用来指定放置组件的位置,一个是row,一个是column。如果未指定row,组件将被放置在第一个可用的行上;如果未指定column,将使用第一列。注意,这里不需要创建网格,直接使用行和列即可。
3.为其他组件预订一个位置
#您可以使用行/列来指定组件的放置位置,并为其他需要提前预留空间。
#-*-编码:cp936-*-
#使用网格来布置组件
fromTkinterimport *
root=Tk()
#创建两个标签
Label(root,text=Hello )。包装()
#将lb2放在第一行第10列
Label(root,text=Grid )。网格(行=0,列=10)
#Lable(root,text=3 )。网格(行=0,列=5)
root.mainloop()
#在这个例子中,lb2被放置在第1行和第11列的位置,但是运行结果实际上与前面的例子没有太大的不同。原因是:如果这个位置没有组件,它就是不可见的。
4.将组件放置在预定位置
#-*-编码:cp936-*-
#使用网格来布置组件
fromTkinterimport *
root=Tk()
#创建两个标签
Label(root,text=1 )。网格()
#将lb2放入第1行第11列
Label(root,text=2 )。网格(行=0,列=10)
Label(root,text=3 )。网格(行=0,列=5)
root.mainloop()
#可以看出,Label(3 )在Label(1 )和Label(2 )之间,即Label(2 )在第11列,Label(3 )在第3列。
5.将两个或更多组件放在同一位置
#-*-编码:cp936-*-
#多个组件同时网格到同一个表位置
fromTkinterimport *
root=Tk()
#创建两个标签
lb1=Label(root,text=1 )
lb2=Label(root,text=2 )
#将lb1和lb2都网格到(0,0)位置
lb1.grid(行=0,列=0)
lb2.grid(行=0,列=0)
def健忘标签():
#grid_slaves返回网格中位置(0,0)处的所有组件。
# grid _ forge从网格中移除这个组件(它没有被删除,你可以使用网格再次显示它)
printroot.grid_slaves(0,0)[0]。grid_forget()
#我测试的时候grid_salves返回的第一个值是lb2,最后一个是grid
按钮(root,text=健忘最后一个,command=健忘标签)。网格(行=1)
root.mainloop()
#此代码用于证明多个组件同时放置在同一位置会导致覆盖问题。至于grid_slaves返回的组件列表怎么排序,我没有查资料。在这个例子中,我使用了索引0,它只返回lb2。然后我用grid_forget把这个删除从网格中去掉,可以看到显示的是lb1。
6.更改列(行)“”的属性值
#-*-编码:cp936-*-
#设置列的属性(columnconfigure)
fromTkinterimport *
root=Tk()
#创建两个标签
lb1=Label(root,text=1 ,bg=red )
lb2=标签(root,text=2 ,bg=blue )
#将lb1和lb2分别放在第1行第1列和第2列的位置。
lb1.grid(行=0,列=0)
lb2.grid(行=0,列=1)
#指定列的最小宽度是100
root.columnconfigure(0,minsize=100)
root.mainloop()
#1和# 2之间的距离变得更远了。
#但是如果这个位置没有组件,这个值就不起作用。
#在设置列或行的属性(rowconfigure)时,使用父容器的方法,而不是自己调用它。
7.组件使用多列(多行)“”
#-*-编码:cp936-*-
#使用多行(多列)
fromTkinterimport *
root=Tk()
#创建以下布局(一个字符占据一个网格位置)
#AE
#公元前
#D
#A占(0,0)(0,1),B占(1,0),C占(1,1),D占(2,0),E占(0,2)
#创建5个标签,以背景颜色区分。
lbA=Label(root,text=A ,bg=red )
lbB=Label(root,text=B ,bg=blue )
lbC=Label(root,text=C ,bg=red )
lbD=Label(root,text=D ,bg=blue )
lbE=Label(root,text=E ,bg=blue )
#以下是布局参数设置
lbA.grid(row=0,column=0,columnspan=2)
lbB.grid(行=1,列=0)
lbC.grid(行=1,列=1)
lbD.grid(row=2)
lbE.grid(行=0,列=2)
root.mainloop()
#A和B和D的区别,它的左边被改变了,由于使用了两张表;
#C与E的区别:C的右边与E的左边对齐,这意味着E已经被放在了第2列的下一个位置,因为A已经使用了第2列。
8.设置表“”中组件的对齐属性
#-*-编码:cp936-*-
#使用粘性设置对齐
fromTkinterimport *
root=Tk()
#创建两个标签
Label(root,text=hellosticky )。网格()
Label(root,text=Tkinter )。网格()
#创建两个标签并指定粘性属性。
Label(root,text=hellosticky )。网格(粘性=W)
Label(root,text=Tkinter )。网格(粘性=W)
root.mainloop()
#默认情况下,组件对齐居中。设置sticky属性可以控制对齐方式、可用值(N、S、E、W)及其组合。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。