Python Tkinter图形工具使用方法及实例解析
时间:2022-07-27
本文章向大家介绍Python Tkinter图形工具使用方法及实例解析,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
Tkinter 常用组件
按钮
- Button 按钮组件
- RadioButton 单选框组件
- CheckButton 选择按钮组件
- Listbox 列表框组件
文本输组件
- Entry 单行文本框组件
- Text 多行文本框组件
标签组件
- Label 标签组件,可以显示图片和文字
- Message 标签组件, 可以根据内容将文字换行
菜单
- Menu 菜单组件
- MenuButton 菜单按钮组件,可以实用Menu代替
滚动条
- Scale 滑动组件
- Scrollbar 滚动条组件
其他组件 Canvas 画布组件
- Frame 框架组件,将多个组件编组
- Toplevel 创建子窗口容器组件
组件的大致实用步骤创建总面板创建面板上各种组件
1.指定组件的父组件,即依附关系
2.利用相应的属性对组件进行设置
3.给组件安排布局最后启动总面板的消息循环组件布局
控制组件的摆放方式
三种布局:
- pack: 按照方位布局
- place: 按照坐标布局
- grid: 网格布局
pack布局
- 最简单,代码量最少,挨个摆放,默认从上到下,系统自动设置
- 通用实用方式为:组件对象.pack(设置……)
- side:停靠方位,可选值为LEFT,TOP,RIGHT,BOTTOM
- fill:填充方式,x,y,BOTH,NONE
- expande:YES/NO 扩充
- anchor:N,E,S,W,CENTER
- ipadx:x方向的内边距
- ipady:y
- padx:x的外方向边界
- pady:y
grid布局
- 通用使用方式:组件对象.grid(设置……)
- 利用row,cblumn编号,都是从0开始
- sticky:N,E,S,W表示上下左右,用来决定组件从哪个方向开始
- 支持ipadx,padx等参数,跟pack函数一样
- 支持rowspan,columnspan,代表跨行,跨列数列
place布局:
- 明确方位的摆放
- 相对位置布局,随意改变窗口大小会导致混乱
- 使用place函数,分为绝对布局和相对布局,绝对布局使用X,Y参数
- 相对布局使用relx,rely,relheight,relwidth
案例1:创建一个自己定义的弹窗、并且里面有文字内容
执行完成就会弹出一个白色定义好的小方框,里面的内容就是你定义的
import tkinter
base = tkinter.Tk() # 创建总面板
# 负责标题
base.wm_title("Label Test") # 创建面板的标题
lb = tkinter.Label(base, text="Pyhton Label") # 创建一些内容,把创建的内容指定给我之前创建好的名为base的面板,Pyhton Label为面板的内容
# 给相应组件指定布局
lb.pack() # 给相应组件指定布局
base.mainloop() # 启动总面板的消息循环(大致意思了解为启动这个面板)
案例2:Button案例,创建一个弹窗,里面生成一个按钮,当按钮被按下去的时候,执行我定义的函数
import tkinter
def showlabel():
global baseFrame # 调用全局变量,baseFrame,也可以把baseFrame = tkinter.Tk() 放到函数上面
lb = tkinter.Label(baseFrame, text="我是函数里面的内容")
lb.pack()
if __name__ == '__main__':
baseFrame = tkinter.Tk ()
btn = tkinter.Button(baseFrame, text="点击我、就会执行函数", command=showlabel) # command为指定要执行的函数,不填默认不执行
btn.pack()
baseFrame.mainloop()
执行结果如下:
pack布局
- 最简单,代码量最少,挨个摆放,默认从上到下,系统自动设置
- 通用实用方式为:组件对象.pack(设置……)
- side:停靠方位,可选值为LEFT,TOP,RIGHT,BOTTOM
- fill:填充方式,x,y,BOTH,NONE
- expande:YES/NO 扩充
- anchor:N,E,S,W,CENTER
- ipadx:x方向的内边距
- ipady:y
- padx:x的外方向边界
- pady:y
案例3:pack 布局案例
# pack 布局案例
import tkinter
def button1():
# 函数内所有代码都是创建一个组件,然后布局
global baseFreame
btn1 = tkinter.Button(baseFreame, text='A')
btn1.pack(side=tkinter.LEFT, expand=tkinter.YES, fill=tkinter.Y)
btn2 = tkinter.Button(baseFreame, text='B')
btn2.pack(side=tkinter.TOP, expand=tkinter.YES, fill=tkinter.BOTH)
btn3 = tkinter.Button(baseFreame, text='C')
btn3.pack(side=tkinter.RIGHT, expand=tkinter.YES, fill=tkinter.NONE, anchor=tkinter.NE)
btn4 = tkinter.Button(baseFreame, text='D')
btn4.pack(side=tkinter.LEFT, expand=tkinter.NO, fill=tkinter.Y)
btn5 = tkinter.Button(baseFreame, text='E')
btn5.pack(side=tkinter.TOP, expand=tkinter.NO, fill=tkinter.BOTH)
btn6 = tkinter.Button(baseFreame, text='F')
btn6.pack(side=tkinter.BOTTOM, expand=tkinter.YES)
btn7 = tkinter.Button(baseFreame, text='G')
btn7.pack(anchor=tkinter.SE)
if __name__ == '__main__':
baseFreame = tkinter.Tk()
button1 ()
baseFreame.mainloop()
执行结果如下:
grid布局
- 通用使用方式:组件对象.grid(设置……)
- 利用row,cblumn编号,都是从0开始
- sticky:N,E,S,W表示上下左右,用来决定组件从哪个方向开始
- 支持ipadx,padx等参数,跟pack函数一样
- 支持rowspan,columnspan,代表跨行,跨列数列
案例3:grid布局案例
import tkinter
def button1():
# 函数内所有代码都是创建一个组件,然后布局
global baseFreame
btn1 = tkinter.Label(baseFreame, text='账户:')
btn1.grid(row=0, sticky=tkinter.W)
en = tkinter.Entry(baseFreame)
en.grid(row=0, column=1, sticky=tkinter.E)
btn2 = tkinter.Label(baseFreame, text='密码:')
btn2.grid(row=1, sticky=tkinter.W)
en2 = tkinter.Entry(baseFreame)
en2.grid(row=1, column=1, sticky=tkinter.E)
btn2 = tkinter.Button(baseFreame, text='登陆')
btn2.grid(row=2, column=1, sticky=tkinter.W)
if __name__ == '__main__':
baseFreame = tkinter.Tk()
button1()
baseFreame.mainloop()
执行结果如下:
以上就是本文的全部内容,希望对大家的学习有所帮助。
- python3 将字典,列表等转换成字符串形式存入mysql数据库并复原成字典,列表(处理稍复杂的格式)
- 1441: Min
- 2429: [HAOI2006]聪明的猴子
- 使用apt-get 安装后的mysql 登录问题
- SQL Server 深入解析索引存储(中)
- 1789: [Ahoi2008]Necklace Y型项链
- 3399: [Usaco2009 Mar]Sand Castle城堡
- 遗传算法(1)
- LOJ#6284. 数列分块入门 8
- 3713: [PA2014]Iloczyn
- 洛谷P3195 [HNOI2008]玩具装箱TOY(单调队列优化DP)
- SQL Server 深入解析索引存储(下)
- 2751: [HAOI2012]容易题(easy)
- codevs3002 石子归并 3
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法