python中tkinter使用,python tkinter grid布局

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: