Python基础=== Tkinter Grid布局管理器详解

本文转自:https://www.cnblogs.com/ruo-li-suo-yi/p/7425307.html          @ 箬笠蓑衣

Grid(网格)布局管理器会将控件放置到一个二维的表格里。主控件被分割成一系列的行和列,表格中的每个单元(cell)都可以放置一个控件。

注意:不要试图在一个主窗口中混合使用pack和grid

(1)标签控件

1 from tkinter import *
2
3 tk=Tk()
4 #标签控件,显示文本和位图,展示在第一行
5 Label(tk,text="First").grid(row=0)
6 Label(tk,text="Second").grid(row=1)#第二行
7
8 #主事件循环
9 mainloop()

(2) 输入控件

 1 from tkinter import *
 2
 3 tk=Tk()
 4 #标签控件,显示文本和位图,展示在第一行
 5 Label(tk,text="First").grid(row=0)
 6 Label(tk,text="Second").grid(row=1)#第二行
 7
 8 #输入控件
 9 Entry(tk).grid(row=0,column=1)
10 Entry(tk).grid(row=1,column=1)
11
12 #主事件循环
13 mainloop()

(3)sticky参数的使用

 1 from tkinter import *
 2
 3 tk=Tk()
 4 #标签控件,显示文本和位图,展示在第一行
 5 Label(tk,text="First").grid(row=0,sticky=E)#靠右
 6 Label(tk,text="Second").grid(row=2,sticky=W)#第二行,靠左
 7
 8 #输入控件
 9 Entry(tk).grid(row=0,column=1)
10 Entry(tk).grid(row=2,column=1)
11
12 #主事件循环
13 mainloop()

(4)columnspan和rowspan参数的使用

columnspan选项可以指定控件跨越多列显示,而rowspan选项同样可以指定控件跨越多行显示。

 1 from tkinter import *
 2
 3 tk=Tk()
 4 var=IntVar()
 5
 6 #标签控件,显示文本和位图,展示在第一行
 7 Label(tk,text="First").grid(row=0,sticky=E)#靠右
 8 Label(tk,text="Second").grid(row=1,sticky=W)#第二行,靠左
 9
10 #输入控件
11 Entry(tk).grid(row=0,column=1)
12 Entry(tk).grid(row=1,column=1)
13
14 button=Checkbutton(tk,text="Precerve aspect",variable=var)
15 button.grid(sticky=W)
16
17 #主事件循环
18 mainloop()

跨越两列显示如下

 1 from tkinter import *
 2
 3 tk=Tk()
 4 var=IntVar()
 5
 6 #标签控件,显示文本和位图,展示在第一行
 7 Label(tk,text="First").grid(row=0,sticky=E)#靠右
 8 Label(tk,text="Second").grid(row=1,sticky=W)#第二行,靠左
 9
10 #输入控件
11 Entry(tk).grid(row=0,column=1)
12 Entry(tk).grid(row=1,column=1)
13
14 button=Checkbutton(tk,text="Precerve aspect",variable=var)
15 button.grid(columnspan=2,sticky=W)
16
17 #主事件循环
18 mainloop()

 1 from tkinter import *
 2
 3 tk=Tk()
 4 var=IntVar()
 5
 6 #标签控件,显示文本和位图,展示在第一行
 7 Label(tk,text="First").grid(row=0,sticky=E)#靠右
 8 Label(tk,text="Second").grid(row=1,sticky=W)#第二行,靠左
 9
10 #输入控件
11 Entry(tk).grid(row=0,column=1)
12 Entry(tk).grid(row=1,column=1)
13
14 #多选框插件
15 button=Checkbutton(tk,text="Precerve aspect",variable=var)
16 button.grid(row=2,columnspan=2,sticky=W)
17
18 #插入图片
19 photo=PhotoImage(file="python_logo.gif")
20 label=Label(image=photo)
21 label.image=photo
22 label.grid(row=0,column=2)
23
24 #主事件循环
25 mainloop()

 1 from tkinter import *
 2
 3 tk=Tk()
 4 var=IntVar()
 5
 6 #标签控件,显示文本和位图,展示在第一行
 7 Label(tk,text="First").grid(row=0,sticky=E)#靠右
 8 Label(tk,text="Second").grid(row=1,sticky=W)#第二行,靠左
 9
10 #输入控件
11 Entry(tk).grid(row=0,column=1,padx=10,pady=10)
12 Entry(tk).grid(row=1,column=1)
13
14 #多选框插件
15 button=Checkbutton(tk,text="Precerve aspect",variable=var)
16 button.grid(row=2,columnspan=2,sticky=W)
17
18 #插入图片
19 photo=PhotoImage(file="python_logo.gif")
20 label=Label(image=photo)
21 label.image=photo
22 label.grid(row=0,column=2,rowspan=2,columnspan=2,
23            sticky=W+E+N+S, padx=5, pady=5)#合并两行,两列,居中,四周外延5个长度
24
25 #主事件循环
26 mainloop()

(5)

 1 from tkinter import *
 2
 3 tk=Tk()
 4 var=IntVar()
 5
 6 #标签控件,显示文本和位图,展示在第一行
 7 Label(tk,text="First").grid(row=0,sticky=E)#靠右
 8 Label(tk,text="Second").grid(row=1,sticky=W)#第二行,靠左
 9
10 #输入控件
11 Entry(tk).grid(row=0,column=1,padx=10,pady=10)
12 Entry(tk).grid(row=1,column=1)
13
14 #多选框插件
15 button=Checkbutton(tk,text="Precerve aspect",variable=var)
16 button.grid(row=2,columnspan=2,sticky=W)
17
18 #插入图片
19 photo=PhotoImage(file="python_logo.gif")
20 label=Label(image=photo)
21 label.grid(row=0,column=2,rowspan=2,columnspan=2,
22            sticky=W+E+N+S, padx=5, pady=5)#合并两行,两列,居中,四周外延5个长度
23
24 #按钮控件
25 button1=Button(tk,text="Zoom in")
26 button1.grid(row=2,column=2)
27 button2=Button(tk,text="Zoom out")
28 button2.grid(row=2,column=3)
29
30
31 #主事件循环
32 mainloop()

(6)padx和pady参数的应用

 1 from tkinter import *
 2 import time
 3
 4 t = Tk()
 5 t.title(‘与python聊天中‘)
 6
 7   #创建frame容器
 8 frmLT = Frame(width=500, height=320, bg=‘white‘)
 9 frmLC = Frame(width=500, height=150, bg=‘red‘)
10 frmLB = Frame(width=500, height=30)
11 frmRT = Frame(width=200, height=500)
12
13 frmLT.grid(row=0, column=0)
14 frmLC.grid(row=1, column=0)
15 frmLB.grid(row=2, column=0)
16 frmRT.grid(row=0, column=1, rowspan=3)

 1 from tkinter import *
 2 import time
 3
 4 t = Tk()
 5 t.title(‘与python聊天中‘)
 6
 7   #创建frame容器
 8 frmLT = Frame(width=500, height=320, bg=‘white‘)
 9 frmLC = Frame(width=500, height=150, bg=‘red‘)
10 frmLB = Frame(width=500, height=30)
11 frmRT = Frame(width=200, height=500)
12
13 frmLT.grid(row=0, column=0,padx=1,pady=3)
14 frmLC.grid(row=1, column=0,padx=1,pady=3)
15 frmLB.grid(row=2, column=0)
16 frmRT.grid(row=0, column=1, rowspan=3,padx=2,pady=3)

利用padx和pady,可以将框架边界区分开

 1 from tkinter import *
 2 import time
 3
 4 t = Tk()
 5 t.title(‘与python聊天中‘)
 6
 7 #创建frame容器
 8 frmLT = Frame(width=500, height=320, bg=‘white‘)
 9 frmLC = Frame(width=500, height=150, bg=‘red‘)
10 frmLB = Frame(width=500, height=30)
11 frmRT = Frame(width=200, height=500)
12
13 frmLT.grid(row=0, column=0,padx=1,pady=3)
14 frmLC.grid(row=1, column=0,padx=1,pady=3)
15 frmLB.grid(row=2, column=0)
16 frmRT.grid(row=0, column=1, rowspan=3,padx=2,pady=3)
17
18 ‘‘‘#固定容器大小
19 frmLT.grid_propagate(0)
20 frmLC.grid_propagate(0)
21 frmLB.grid_propagate(0)
22 frmRT.grid_propagate(0)‘‘‘
23
24 #添加按钮
25 btnSend = Button(frmLB, text=‘发 送‘, width = 8)#在frmLB容器中添加
26 btnSend.grid(row=2,column=0)
27 btnCancel = Button(frmLB, text=‘取消‘, width = 8)
28 btnCancel.grid(row=2,column=1,sticky=E)
29
30 #添加图片
31 imgInfo = PhotoImage(file = "python_logo.gif")
32 lblImage = Label(frmRT, image = imgInfo)
33 lblImage.image = imgInfo
34 lblImage.grid()
35
36 #固定容器大小
37 frmLT.grid_propagate(0)
38 frmLC.grid_propagate(0)
39 frmLB.grid_propagate(0)
40 frmRT.grid_propagate(0)

原文地址:https://www.cnblogs.com/botoo/p/8464846.html

时间: 2024-11-07 16:56:38

Python基础=== Tkinter Grid布局管理器详解的相关文章

Grid 布局管理器

Grid 布局管理器: Grid布局类wx.GridSizer,Grid布局以网格形式对子窗口或控件进行摆放,容器被分成大小相等的矩形,一个矩形中放置一个子窗口或控件. wx.GridSizer构造方法如下: wx.GridSizer(rows,cols,vgap,hgap). 创建制定函数和列数的wx.GridSizer对象,并制定水平和垂直间隙,参数hgap是水平间隙.添加的子窗口或控件个数不得超过rows*cols之积,否则容易引发异常 wx.GridSizer(rows,cols,gap

Python基础之格式化输出函数format()功能详解

之前发过一篇文章:Python基础之常用格式化输出字符详解 但是呢,有时候我们需要用到多个%的时候,用这个就很不方便了,比如数错%数量或者一 一对应的时候... 这里补充一个字典方式的格式化输出字符的办法 print("double abc is %(a)s%(b)s%(c)s"%{'a':'aa','b':'bb','c':'cc'}) 这种方法呢,最大一个好处是字典格式可以和 json 文件互相转换,相当方便! format() 今天呢,在这里在给大家介绍一个比较先进的方法:for

Python Tkinter模块 Grid布局管理器参数详解

在使用Tkinter模块编写图像界面时,经常用到pack()和grid()进行布局管理,pack()参数较少,使用方便,是最简单的布局,但是当控件数量较多时,可能需要使用grid()进行布局(不要在同一个窗口中同时使用grid()和pack()!!). grid使用方法和主要参数: row=x,column=y:将控件放在x行,y列的位置.注意: 如果不指定参数,则默认从0开始. 此处的行号和列号并不是像在坐标轴上一样严格,只是代表一个上下左右的关系,如在行号"1"没有出现的情况下:

rpm程序包管理器详解

1. 程序包管理器的功能 我们知道,由程序员编写并提供的程序源代码要转换成目标二进制格式才能在计算机上运行起来,但用户要在平台上使用时需要手动编译安装后才能使用,对于普通用户来说有一定难度.因此为了降低普通用户对应用程序的使用难度,程序员可在提供源代码的同时提供已在特定环境下编译好的程序文件,只要用户的平台环境和程序员的平台环境相同,就可以通过解压程序员提供的二进制格式文件即可使用,而无需自己手动编译安装. 一个已编译好的程序由二进制程序.库文件.配置文件和帮助手册等组成,而程序包管理器的功能就

spring的annotation-driven配置事务管理器详解

http://blog.sina.com.cn/s/blog_8f61307b0100ynfb.html 好吧,这个作者也是转载的 ———————————————————————————————————————————————————————————————————————————————————— 这篇文章是我从ITeye上复制来的,看了一遍,觉得很深刻,决定把他复制来,对原作者表示感谢. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

NLB网路负载均衡管理器详解

序言 在上一篇配置iis负载均衡中我们使用啦微软的ARR,我在那篇文章也中提到了网站的高可用性,但是ARR只能做请求入口的消息分发服务,这样如果我们的消息分发服务器给down掉啦,那么做再多的应用服务集群也都枉然. 这篇文章我主要针对解决这一问题来做分析,引入NLB,相对于ARR来说,ARR算是应用级别的负载均衡方案,而NLB则是服务器级别的负载均衡方案. 如果微软的这两款方案我们结合起来使用,那便是微软高可用网站方案的天作之合啦. Application Request Route与NLB高可

【python基础】os.path模块常用方法详解

os.path模块 主要用于文件的属性获取,在编程中经常用到,以下是该模块的几种常用方法. 更多的方法可以去查看官方文档:http://docs.python.org/library/os.path.html 参考:https://www.cnblogs.com/wuxie1989/p/5623435.html https://www.baidu.com/link?url=mGOU7FRFXGdT0vyvankAtMgcHKl8wqA1AqClGtdoUOtJ87SZSgGBS6SL1BoUuL

Python基础之常用格式化输出字符详解

写代码的时候经常会遇到使用格式化字符的情况,这里将常用的三种情况:%s.%d和%f 用代码给大家详细说明下: %s 字符串 %d 整型数字 %f 浮点型 好了~格式化字符的输出就讲到这里了,如果对大家有帮助,点个赞在走呗! 原文地址:https://www.cnblogs.com/qun542110741/p/9122504.html

python之tkinter使用-Grid(网格)布局管理器

1 # 使用tkinter编写登录窗口 2 # Grid(网格)布局管理器会将控件放置到一个二维的表格里,主控件被分割为一系列的行和列 3 # stricky设置对齐方式,参数N/S/W/E分别表示上.下.左.右 4 # columnspan:指定控件跨越多列显示 5 # rowspan:指定控件跨越多行显示 6 # padx.pady分别设置横向和纵向间隔大小 7 8 import tkinter as tk 9 10 root = tk.Tk() 11 root.title("请登录&quo