Python:GUI库tkinter(一)

学习自:

Python GUI 编程(Tkinter) | 菜鸟教程

TkDocs_官方文档

1、几个常用的Python GUI库

tkinter:Python的标准Tk GUI工具包的接口。

wxPython:一款开源软件,是Python语言的一套优秀的GUI图形库。

Jython:Jython程序可以和Java无缝集成

2、创建一个GUI程序的步骤

①导入Tkinter模块:import tkinter

②创建控件

③指定这个控件的master,即这个控件属于哪一个

④告诉GM(geometry manager)有一个控件产生了

3、tkinter组件

控件 描述
Button 按钮;
Canvas 画布;可以在其上显示线条、图片
Checkbutton 多选框;
Entry 输入框;
Frame 框架;在屏幕上显示一个矩形区域,可以用作容器
Label 标签;可以显示文本和位图
Listbox 列表框;
Menubutton 菜单按钮;
Menu 菜单;显示菜单栏,下拉菜单和弹出菜单
Message 消息;用来显示多行文本,与Label比较类似
Radiobutton 单选按钮;
Scale 范围控件;显示一个数值刻度,为输出限定范围内的数字区间
Scrollbar 滚动条;当内容超过可视化区域时使用,比如列表框
Text 文本控件;用于显示多行文本
Toplevel 容器;用来提供一个单独的对话框,与Frame比较类似
Spinbox 输入控件;与Entry类似,但是可以指定输入的范围值
PanedWindow 窗口布局管理的插件,可以包含一个或者多个子控件
LabelFrame 容器控件。常用于复杂的窗口布局
tkMessageBox 应用程序的消息框

补充:GUI消息库tkMessageBox在Python3.4以后变为了tkinter.messagebox

4、标准属性

标准属性也就是所有的控件的共同属性,比如大小、字体和颜色等等

属性 描述
Dimension 控件大小;
Color 控件颜色;
Font 控件字体;
Anchor 锚点;
Relief 控件样式;
Bitmap 位图;
Cursor 光标;

5、几何管理

Tkinter控件有特点的几何状态管理方法,管理整个控件区域组织。

几何方法 描述
pack() 包装;
grid() 网格;
place() 位置;

6、Button:按钮

Tkinter按钮用于在Python应用程序中添加按钮,按钮上可以放文本或者图像,按钮可用于监听用户行为,能够与一个Python函数关联,当按钮被按下时,自动调用该函数。

语法

w = Button( master , option=value , ... )

参数

master:按钮的父容器;

options:可选项,即该按钮可以设置的属性(见4)。这些选项可以用 key = value 的形式进行设置。

可选项

可选项 描述
activebackground 当鼠标放上去时,按钮的背景色
activeforeground 当鼠标放上去时,按钮的前景色
bd 按钮边框的大小,默认为2pixel
bg 按钮的背景色
command 按钮关联的函数,当按钮被点击时,执行该函数
fg 按钮的前景色(按钮文本的颜色)
font 文本字体
height 按钮的高度
highlightcolor 要高亮的颜色
image 按钮上要显示的图片
justify 显示多行文本的时候,设置不同行之间的对齐方式,可选的方式包括LEFT、RIGHT、CENTER
padx 按钮在x轴方向上的内边距
pady 按钮在y轴方向上的内边距
relief

边框样式,设置控件的3D效果,可选项有:FLAT、SUNKEN、RAISED、GROOVE、RIDGE。

默认为FLAT

state 设置按钮组件的状态,可选数值有NORMAL、ACTIVE、DISABLED。默认为NORMAL
underline 下划线。默认按钮上的文本都不带下划线。取值就是带下划线的字符串索引,为0时,第一个字符带下划线,为1时,前两个字符带下划线,以此类推
width 按钮的宽度,如果没有设置该项,则其大小将自适应按钮的内容
wraplength 限制按钮每行显示的字符的数量
text 按钮的文本内容
anchor 锚,控制文本的位置,默认为中心

方法

方法 描述
deselect() 清除单选按钮的状态
flash() 在激活状态颜色和正常颜色之间闪烁几次单选按钮,但保持它开始时的状态
select() 设置单选按钮为选中

例子

复制代码
import tkinter
import tkinter.messagebox

top=tkinter.Tk()

def helloCallBack():
    tkinter.messagebox.showinfo('Hello Python','Hello Runoob')

b=tkinter.Button(top,text='点我',command=helloCallBack)
b.pack()
top.mainloop()
复制代码

 7、Canvas:画布

画布Canvas是用来绘图的,可绘制内容非常多:各种几何形状(直线、矩形、圆……)、图片、位图、文字、UI组件(如Button)。

学习总结自:Python tkinter Canvas画布完全攻略-Python

构造

w = Canvas ( master , option = value , ... )

参数

参数

描述

bd 边框宽度,默认2pixel
bg 背景色
confine 如果为True(默认),则画布不能滚动到可以滑动的区域外
cursor 光标的形状,如arrow、circle、cross、plus等
height 高度
highlightcolor 高亮颜色
relief 边框样式,可选值FLAT、SUNKEN、RAISED、GROOVE、RIDGE。 默认为 FLAT。
scrollregion 一个Tuple(w,n,e,s),定义了画布可以滚动的最大区域,分别为左上右下
width 宽度
xscrollincrement 水平滚动的数量值
xscrollcommand 水平滚动条
yscrollincrement 垂直滚动的数量条
yscrollcommand 垂直滚动套

方法:canvas.create_xxx

xxx可以是以下几项

xxx

说明

arc 扇形
bitmap 位图
image 图像
line 线条
oval 椭圆
polygon 多边形
rectangle 矩形
text 文字
window 组件

Canvas绘图时,(0,0)位于Canvas左上角。

绘制line、rectangle、oval时,均需要指出两个点的坐标,例如create_xxx(x1,y1,x2,y2),对于line,(x1,y1)是起点,(x2,y2)是终点;对于rectangle,分别是左上和右下点的坐标;对于oval,是圆的外接矩形的左上和右下角点的坐标。

绘制arc时,同样是指定左上和右下两点坐标。可以通过参数start改变起始角度,也可以通过extent改变转过的角度。

绘制polygon时,需要指定多边形所有点的坐标。

绘制bitmap、image、text、window时,只要一个坐标点的位置即可,用于指定目标的放置位置。

绘制这些元素时的参数

参数 说明
fill 填充颜色。默认不填充
outline 边框颜色。
width 宽度。默认1pixel
dash 边框采用虚线。该属性值可以为单独的整数,指定每根虚线的长度;也可以形如(5,2,3)形式——5:线段长度;2:间隔长度;3:虚线长度;
stipple 使用位图平铺进行填充。该选项可以和fill选项结合使用,fill选项用于指定位图的颜色
style 弧的样式,仅对arc有效。PIESLICE(扇形)、CHORD(弓形)、ARC(仅绘制弧)选项值
start 弧的起始角度,仅对arc有效。
extent 弧的角度,仅对arc有效
arrow 绘制line时,两端是否有箭头。NONE(两端无箭头)、FIRST(开始端有箭头)、LAST(结束端有箭头)、BOTH(两端都有箭头)
arrowshape 指定箭头形状。该选项是一个形如 "20 20 10" 的字符串,字符串中的三个整数依次指定填充长度、箭头长度、箭头宽度。
joinstyle 连接点的形状,仅对line和polygon有效。 METTER、ROUND、BEVEL
anchor 元素放置位置,仅对text、window有效
justify 文字的对齐方式,仅对text有效。CENTER、LEFT、RIGHT

 

实例

复制代码
import tkinter
import tkinter.messagebox

#创建一个矩形,指定画布的颜色为白色
root = tkinter.Tk()

#传建一个Canvas,设置其背景色为白色
cv = tkinter.Canvas(root , bg='white')
#创建一个矩形,左上和右下坐标分别为(10,10)和(110,110)
cv.create_rectangle(10,10,110,110)
cv.pack()
root.mainloop()
复制代码

补充

由于我们总是先创建一个Canvas,再在其中生成一个具体的要素,所以为确定方位,我们可以给这个Canvas涂上背景色,来更好地确认这些要素放置的位置:

cv = tkinter.Canvas(root , bg='white')

在用create_image往canvas中添加图像时,通常写法是这样:

canvas.create_image(x,y,anchor,image)
#例子
canvas.create_image((0,0),anchor='n',image=image)

anchor有(n,s,w,e,ne,nw,sw,se,center)九种位置,它指明了我们的image的位置是以什么为基准的,举个例子:

n就代表以上边界中点基准点,前边的x,y都是指这个基准点,即上边界中点的位置;

以此类推,ne就代表以右上角顶点为基准点;

center代表以图像中心点为基准点……

这样我们再来看 canvas.create_image(x,y,anchor,image),这句话的意思就明了了——把image的anchor点,放在canvas的(x,y)处,得到最终的imagecanvas的相对位置。

 

8、Checkbutton:复选框

复选框用于选取我们需要的选项,每一项之前有个选项框,选中则会有√,再次点击则取消选中

语法

w = Checkbutton ( master , option = value , ... )

参数

参数同上

可选项

可选项

说明

activebackground 鼠标放上去时,按钮的背景色
activeforeground 鼠标放上去时,按钮的前景色(文字颜色)
bg 按钮的背景色
bitmap 位图
bd 边框的大小,默认为2pixel
command 关联函数,按钮被点击时,执行该函数
cursor 光标形状
disableforeground 禁用项的前景色
font 文本字体
fg 选项的前景色
height 复选框文本行数,默认为1
highlightcolor 聚焦的高亮颜色
image 是否使用图标
justify 显示多行文本的时候,设置不同行之间的对齐方式
offvalue Checkbutton的值不仅仅是1或0,可以是其他类型的数值,可以通过onvalue和offvalue的属性设置Checkbutton的状态值
onvalue  
padx x轴上的内边距,默认1pixel
pady y轴上的内边距
relief 边框样式
selectcolor 选中后的颜色,默认为'red'
selectimage 选中后的图片
state 状态
text 显示的文本,用'\n'对文本进行换行
underline 下划线
variable 变量,1或0,代表选中或者选不中
width 宽度
wraplength 是否设置包裹

方法

deselect、flash、invoke、select、toggle

实例

复制代码
from tkinter import *
import tkinter

top = tkinter.Tk()
CheckVar1 = IntVar()
CheckVar2 = IntVar()
C1 = Checkbutton(
    top, text='RUNOOB', variable=CheckVar1,
    onvalue=1,offvalue=0,height=5,width=20
)
C2 = Checkbutton(
    top,text='GOOGLE',variable=CheckVar2,
    onvalue=1,offvalue=0,height=5,width=20
)
C1.pack()
C2.pack()
top.mainloop()
复制代码

9、文本框:Entry

允许用户输入一行文本字符串。如果需要输入多行文本,可以使用Text组件;如果需要显式一行或者多行文本并且不允许修改,可以使用Label组件

语法、可选项

同前

补充的可选项

补充的可选项 说明
exportselection 默认情况下,如果在输入框中选中文本,会默认复制到粘贴板。取消这个功能可以通过设置值为0实现
show 指定文本框内容显示为字符。比如密码可以值设置为show='.'
textvariable 文本框的值,是一个StringVar()对象

方法

方法 描述
delete(first , last=None)

删除文本框中指定位置处的值

text.delete(10) #删除索引10处的值
text.delete(10,20) #删除索引值从10到20之间的值
text.delete(0,END)#删除所有值
get() 获取文本框的值 
icursor(index)  将光标移动到指定索引位置,只有当文本框获取焦点后成立
index(index)  指定索引处的值 
insert(index , s)  向索引index处插入值s 
select_adjust( index )  选中指定索引和光标所在位置之间的值 
selete_clear()  清空文本框 
select_from( index )  设置光标的索引 
select_parent()  如果选中了,返回True,否则False 
select_range( start , end )  选中指定索引位置的值 
select_to( index )  选中指定索引与光标之间的值 

实例

复制代码
from tkinter import *
import tkinter

top=tkinter.Tk()
L1=Label( top , text='网站名')
L1.pack( side = LEFT)
E1= Entry( top , bd =5)
E1.pack(side = RIGHT)
top.mainloop()
复制代码

10、框架:Frame

框架控件在屏幕上显示一个矩形区域,多用来作为容器

补充的可选项

takefocus : 指定该组件是否接受输出焦点(用户可以通过tab键将焦点转移上来),默认为false

实例

复制代码
from tkinter import *
import tkinter

def say_hi():
    print('Hello ~!')

top=tkinter.Tk()
frame1=Frame(top)
frame2=Frame(top)
top.title('tkinter frame')
label=Label(frame1 , text='Label' , justify=LEFT)
label.pack(side=LEFT)

hi_there =Button(frame2 , text ='Say hi~' , command=say_hi)
hi_there.pack()

frame1.pack(padx=1 , pady=1)
frame2.pack(padx=10,pady=10)
top.mainloop()
复制代码

11、标签:Label

Label:在指定的窗口中显示文本和图像(区别于Entry和Text,该控件中的文本不允许用户修改)

补充的可选项

anchor 文本或图像在背景内容区的位置,默认为center,可选值为(n,s,w,e,ne,nw,sw,se,center)
textvariable StringVar,显示标签文本。修改该项会使标签文本自动更新

实例

from tkinter import *
import tkinter

top=Tk()
w=Label(top , text = 'Hello RUNOOB!')
w.pack()
top.mainloop()

 12、总结

xxx控件用法的程序大纲

复制代码
from tkinter import *
import tkinter

#1、创建一个控件的父容器Tk对象
top=Tk()

#2、实例化控件
w=xxx( top , options=value , ...)

#3、部署控件到窗口中
w.pack( ... ) #部署

#4、主窗口显示
top.mainloop() 
复制代码

 

posted @   ShineLe  阅读(752)  评论(0编辑  收藏  举报
编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
点击右上角即可分享
微信分享提示