Python Tkinter汇总介绍
Python (Tkinter)
下载
pip install tk |
由于Tkinter的GUI界面十分的不美观,建议下载ttkbootstrap
python -m pip install ttkbootstrap |
Python Tkinter 项目例子
窗口
Tk()类——主窗口
Toplevel()类——子窗口
例如:
from tkinter import * |
窗口属性
| 属性名 | 介绍 | 属性名 | 介绍 | |
|---|---|---|---|---|
| bg | 窗口的背景颜色 | bd | 窗口的边框宽度(默认为2像素) | |
| cursor | 鼠标指针在窗口上时的样式 | height | 窗口的高度 | |
| width | 窗口的宽度 | relief | 窗口的边框样式 | |
| title | 窗口的标题 | resizable | 窗口是否可以调整大小(默认为 True) | |
| iconbitmap | 窗口的图标 | iconify | 将窗口最小化 | |
| deiconify | 将窗口从最小化恢复 | state | 窗口的状态(normal、iconic、withdrawn、oricon) | |
| overrideredirect | 是否隐藏窗口的标题栏和边框 | configure() | configure(bg=“”,bd=“”) | |
| geometry() | geometry(“widthxheight”) | – | – |
使用窗口属性
对象名.属性名 = 属性值
例如:
from tkinter import * |
tkinter wm_attributes
-alpha:设置窗口透明度,取值为0.0(完全透明)到1.0(完全不透明)之间的浮点数。-topmost:设置窗口是否置顶,取值为0或1。-disabled:设置窗口是否被禁用,取值为0或1。-fullscreen:设置窗口是否全屏显示,取值为0或1。-toolwindow:设置窗口是否为工具窗口,取值为0或1。-transparentcolor:设置窗口的透明颜色,取值为颜色名称或#RRGGBB格式的十六进制值。-modified:设置窗口是否被修改,取值为0或1。- 只有-alpha和-topmost参数是在所有平台上都可用的,其他参数的可用性可能因平台而异。
使用tkinter wm_attributes
对象名.wm_attributes(对应变量名,变量值)
例如:
from tkinter import * |
tkinter protocol
-
WM_DELETE_WINDOW:窗口关闭事件,对应于用户点击窗口关闭按钮或调用destroy方法时触发。 -
WM_TAKE_FOCUS:当窗口或其子控件尝试获取输入焦点时触发。 -
WM_SAVE_YOURSELF:当窗口管理器要求应用程序保存其状态时触发。 -
WM_LOSE_FOCUS:当窗口或其子控件失去输入焦点时触发。
使用tkinter protocol
对象名.protoco(”事件名“,调用函数)
例如:
from tkinter import * |
页面布局
页面布局-简介
pack:包装grid:网格place:位置
pack页面布局
-anchor:容器的对齐方式【北N、南S、西W、东E、东南SE、西南SW、东北NE、西北NW】-after:将容器置于其他组件之后-before:将容器置于其他组件之前-expand:容器在整个窗口上,将容器放置在剩余空闲位置上的中央【包括水平和垂直方向】-fill:决定容器是否填充,以及填充的方向【X轴x、Y轴y、全部填充both】-ipadx:容器在X轴上的显示大小-ipady:容器在Y轴上的显示大小-padx:容器之间在X轴上的外边距-pady:容器之间在Y轴上的外边距-side:决定容器停靠的方向【上top、下bottom、左left、右right】- side="left"或side="right"时,fill="x"不起作用,只能填充y
- side=“top”,side="bottom"时,fill="y"不起作用,只能填充x
grid页面布局
-
row:容器所在行 -
column:容器所在列 -
-ipadx:容器在X轴上的显示大小 -
-ipady:容器在Y轴上的显示大小 -
-padx:容器之间在X轴上的外边距 -
-pady:容器之间在Y轴上的外边距 -
rowspan:容器跨几行 -
columnspan:容器跨几列 -
sticky:容器的对齐停靠方向【北N、南S、西W、东E、东南SE、西南SW、东北NE、西北NW】 -
grid_bbox(column=None, row=None, col2=None, row2=None):返回一个有四个元素的元组,用来描述容器内一些或者全部单元的边界。【返回顺序:左上方区域的x坐标,左上方区域的y坐标,宽度,高度】【若只传递了column和row参数,返回参数描述的是该行列的单元大小】【若传递了col2和row2参数,返回参数描述的是从column列到col2列,以及从row行到row2行总体区域的大小】 -
grid_forget():取消容器显示,容器仍在内存中,再次调用grid()以显示【需重新设置grid(option)选项】 -
grid_info():返回容器各个option组成的dict -
grid_location(x, y):设定容器在屏幕中相对于容纳单元的(x,y)坐标,并返回grid系统中的哪个单元包含了该坐标(column,row) -
grid_propagate():正常情况下,所有容器都会根据内容自动调整大小【固定容器大小:w.grid_propagate(0)】 -
grid_remove():取消容器显示,容器仍在内存中,会存储grid(option),再次调用grid()以显示 -
grid_size():返回有两个元素的元组,分别表示容器所在的列数和行数。 -
w.grid_slaves(row=None, column=None):返回一组由容器管理容器的list。若未提供任何参数,返回包含所有容器的list【提供row参数,返回该行所有容器,提供column参数,则返回该列所有容器】
place
-
anchor:控制容器在place分配的空间中的位置【北N、南S、西W、东E、东南SE、西南SW、东北NE、西北NW、中央CENTER】【默认NW】 -
bordermode:指定边框模式【内部INSIDE、外部OUTSIDE】【默认INSIDE】 -
height:指定该容器的高度【像素】 -
in_:将该容器放到该选项指定的容器中【指定的容器必须是该容器的父容器】 -
relheight:指定该容器相对于父容器的高度【取值范围是0.0~1.0】 -
relwidth:指定该容器相对于父容器的宽度【取值范围是0.0~1.0】 -
relx:指定该容器相对于父容器的水平位置【取值范围是0.0~1.0】 -
rely:指定该容器相对于父容器的垂直位置【取值范围是0.0~1.0】 -
width:指定该容器的宽度【像素】 -
x:指定该容器的水平偏移位置【像素】【若同时指定了relx选项,优先实现relx选项】 -
y:指定该组件的垂直偏移位置【像素】【若同时指定了rely选项,优先实现rely选项】
按钮
使用Button()类
例如:
from tkinter import * |
按钮属性
text:按钮上显示的文本。width:按钮的宽度。height:按钮的高度。bg:按钮的背景颜色。fg:按钮上文本的颜色(前景颜色)。font:按钮上文本的字体。command:按钮被点击时触发的函数。
例如:
from tkinter import * |
标签
使用Label()类
例如:
from tkinter import * |
标签属性
text:标签文字relief:标签样式,设置控件3D效果【平面FLAT、凹陷SUNKEN、凸起RAISED、凹槽GROOVE、盆地RIDGE】bg:标签背景色fg:标签前景色bd:标签文字边框宽度【需要relief结合使用才会凸显效果】font:标签文字字体设置【font=("字体", "字号", "样式", "样式"......)】【样式:粗体bold、斜体italic、下划线underline=1、删除线overstrike=1】【下划线和删除线需要重新设置字体】justify:标签文字对齐方式【左LEFT、右RIGHT、中央CENTER】underline:下划线【取值即是带下划线的字符串索引,为 0 时,第一个字符带下划线,为 1 时,第两个字符带下划线,以此类推】wraplength:按钮达到限制的屏幕单元后换行显示height:字体高度【需要relief结合使用才会凸显效果】wideth:字体宽度【需要relief结合使用才会凸显效果】image:标签插入图片【插入的图片必须有PhotImage转换格式后才能插入,并且转换的图片格式必须是.gif格式】
框架
使用Frame()类
例如:
from tkinter import * |
框架属性
bg:框架背景颜色bd:框架的大小,默认为 2 个像素cursor:鼠标指针在窗口上时的样式height:框架的高度,默认值0highlightbackground:框架没有获得焦点时,高亮边框的颜色,默认由系统指定。highlightcolor:框架获得焦点时,高亮边框的颜色highlightthickness:指定高亮边框的宽度,默认值为0-不带高亮边框relief:边框样式【平面FLAT、凹陷SUNKEN、凸起RAISED、凹槽GROOVE、盆地RIDGE】width:设置框架宽度,默认值为0takefocus:指定该组件是否接受输入焦点(用户可以通过 tab 键将焦点转移上来),默认为 false
画布
使用Canvas()类
例如:
from tkinter import * |
画布属性
bg:画布背景颜色bd:画布的大小,默认为 2 个像素cursor:鼠标指针在窗口上时的样式confine:若为 true (默认), 画布不能滚动到可滑动的区域外。height:画布的高度,默认值0highlightbackground:画布没有获得焦点时,高亮边框的颜色,默认由系统指定。highlightcolor:画布获得焦点时,高亮边框的颜色highlightthickness:指定高亮边框的宽度,默认值为0-不带高亮边框relief:边框样式【平面FLAT、凹陷SUNKEN、凸起RAISED、凹槽GROOVE、盆地RIDGE】width:设置画布宽度,默认值为0takefocus:指定该组件是否接受输入焦点(用户可以通过 tab 键将焦点转移上来),默认为 falsescrollregion:一个元组 tuple (w, n, e, s),定义了画布可滚动的最大区域,w 为左边,n 为头部,e 为右边,s 为底部xscrollincrement:用于滚动请求水平滚动的数量值xscrollcommand:水平滚动条,如果画布是可滚动的,则该属性是水平滚动条的 .set()方法yscrollincrement:类似 xscrollincrement, 但是垂直方向yscrollcommand:垂直滚动条,如果画布是可滚动的,则该属性是垂直滚动条的 .set()方法
画布方法
arc − 创建一个扇形
coord = 10, 50, 240, 210 |
image − 创建图像
filename = PhotoImage(file = "sunshine.gif") |
line − 创建线条
line = canvas.create_line(x0, y0, x1, y1, ..., xn, yn, options) |
oval − 创建一个圆
oval = canvas.create_oval(x0, y0, x1, y1, options) |
polygon − 创建一个至少有三个顶点的多边形
oval = canvas.create_polygon(x0, y0, x1, y1,....xn, yn, options) |
单行文本框
使用Entry()类
例如:
from tkinter import * |
单行文本框属性
bg:输入框背景颜色bd:边框的大小,默认为 2 个像素cursor:鼠标指针在窗口上时的样式font:文本字体exportselection:默认情况下,你如果在输入框中选中文本,默认会复制到粘贴板,如果要忽略这个功能刻工艺设置 exportselection=0fg:文字颜色。值为颜色或为颜色代码,如:‘red’,‘#ff0000’highlightcolor:文本框高亮边框颜色,当文本框获取焦点时显示justify:显示多行文本的时候,设置不同行之间的对齐方式,可选项包括LEFT, RIGHT, CENTERrelief:边框样式【平面FLAT、凹陷SUNKEN、凸起RAISED、凹槽GROOVE、盆地RIDGE】selectbackground:选中文字的背景颜色selectborderwidth:选中文字的背景边框宽度selectforeground:选中文字的颜色show:指定文本框内容显示为字符,值随意,满足字符即可。如密码可以将值设为 show=“*”state:默认为 state=NORMAL, 文框状态,分为只读和可写,值为:normal/disabledtextvariable:文本框的值,是一个StringVar()对象width:文本框宽度xscrollcommand:设置水平方向滚动条,一般在用户输入的文本框内容宽度大于文本框显示的宽度时使用。
单行文本框方法
- 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 ):选中指定索引和光标所在位置之前的值 -
select_clear():清空文本框 -
select_from ( index ):设置光标的位置,通过索引值 index 来设置 -
select_present():如果有选中,返回 true,否则返回 false。 -
select_range ( start, end ):选中指定索引位置的值,start(包含) 为开始位置,end(不包含) 为结束位置start必须比end小 -
select_to ( index ):选中指定索引与光标之间的值 -
xview ( index ):该方法在文本框链接到水平滚动条上很有用。 -
xview_scroll ( number, what ):用于水平滚动文本框。 what 参数可以是 UNITS, 按字符宽度滚动,或者可以是 PAGES, 按文本框组件块滚动。 number 参数,正数为由左到右滚动,负数为由右到左滚动。
列表框
使用Listbox()类
例如:
from tkinter import * |
列表框属性
bg小部件的背景颜色bd它表示边框的大小。默认值是2像素cursor鼠标指针将看起来像光标类型,如点,箭头等font列表框项目的字体类型fg文字的颜色height它代表列表框中显示的行数。默认值是10highlightcolor当小组件处于焦点状态时,列表框项目的颜色highlightthickness高光的厚度relief边框样式【平面FLAT、凹陷SUNKEN、凸起RAISED、凹槽GROOVE、盆地RIDGE】selectbackground用于显示所选文本的背景颜色selectmode:用于确定可以从列表中选择的项目的数量【设置:BROWSE、SINGLE、MULTIPLE、EXTENDED】width:部件的宽度,单位是字符xscrollcommand:用来让用户水平滚动列表框yscrollcommand:用来让用户垂直滚动列表框
列表框方法
activate(index):它用于选择指定索引处的行curselection():它返回一个包含所选元素的行号的元组,从0开始计算。如果没有选择,则返回一个空元组delete(first, last = None):它用于删除存在于给定范围内的行get(first, last = None):它用于获取存在于给定范围内的列表项index(i):它用于将具有指定索引的行放置在小组件的顶部insert(index, *elements):它用于在指定的索引前插入具有指定数量元素的新行nearest(y):它返回离列表框部件的y坐标最近的线的索引see(index):它用于调整列表框的位置,使索引所指定的行可见size():它返回存在于列表框部件中的行数xview():这是用来使小部件可以水平滚动的xview_moveto(fraction):它用于使列表框在水平方向上可滚动,其宽度为列表框中最长的一行的几分之一xview_scroll(number, what):它用于使列表框可按指定的字符数水平滚动yview():它使列表框可以垂直滚动yview_moveto(fraction):它用于使列表框可垂直滚动,其宽度为列表框中最长的一行的几分之一yview_scroll (number, what):它用于使列表框可按指定的字符数垂直滚动
菜单
使用Menu()类
例如:
from tkinter import * |
菜单属性
| 名称 | 说明 |
|---|---|
| add_cascade(**options) | 添加一个父菜单,将一个指定的子菜单,通过 menu 参数与父菜单连接,从而创建一个下拉菜单。 |
| add_checkbutton(**options) | 添加一个多选按钮的菜单项 |
| add_command(**options) | 添加一个普通的命令菜单项 |
| add_radiobutton(**options) | 添加一个单选按钮的菜单项 |
| add_separator(**options) | 添加一条分割线 |
| add(add(itemType, options)) | 添加菜单项,此处 itemType 参数可以是以下几种:“command”、“cascade”, “checkbutton”、“radiobutton”、“separator” 五种,并使用 options 选项来设置 菜单其他属性。 |
| delete(index1, index2=None) | 1. 删除 index1 ~ index2(包含)的所有菜单项 2. 如果忽略 index2 参数,则删除 index1 指向的菜单项 |
| entrycget(index, option) | 获得指定菜单项的某选项的值 |
| entryconfig(index, **options) | 设置指定菜单项的选项 |
| index(index) | 返回与 index 参数相应的选项的序号 |
| insert(index, itemType, **options) | 插入指定类型的菜单项到 index 参数指定的位置,类型可以是 是:“command”,“cascade”,“checkbutton”,“radiobutton” 或 “separator” 中的一个,或者也可以使用 insert_类型() 形式来, 比如 insert_cascade(index, **options)…等 |
| invoke(index) | 调用 index 指定的菜单项相关联的方法 |
| post(x, y) | 在指定的位置显示弹出菜单 |
| type(index) | 获得 index 参数指定菜单项的类型 |
菜单方法
| 名称 | 说明 |
|---|---|
| accelerator | 1. 设置菜单项的快捷键,快捷键会显示在菜单项目的右边,比如 accelerator = “Ctrl+O” 表示打开; 2. 注意,此选项并不会自动将快捷键与菜单项连接在一起,必须通过按键绑定来实现 |
| command | 选择菜单项时执行的 callback 函数 |
| label | 定义菜单项内的文字 |
| menu | 此属性与 add_cascade() 方法一起使用,用来新增菜单项的子菜单项 |
| selectcolor | 指定当菜单项显示为单选按钮或多选按钮时选择中标志的颜色 |
| state | 定义菜单项的状态,可以是 normal、active 或 disabled |
| onvalue/offvalue | 1. 默认情况下,variable 选项设置为 1 表示选中状态,反之设置为 0,设置 offvalue/onvalue 的值可以自定义未选中状态的值 |
| tearoff | 1. 如果此选项为 True,在菜单项的上面就会显示一个可选择的分隔线; 2. 注意:分隔线会将此菜单项分离出来成为一个新的窗口 |
| underline | 设置菜单项中哪一个字符要有下画线 |
| value | 1. 设置按钮菜单项的值 2. 在同一组中的所有按钮应该拥有各不相同的值 3. 通过将该值与 variable 选项的值对比,即可判断用户选中了哪个按钮 |
| variable | 当菜单项是单选按钮或多选按钮时,与之关联的变量 |
暂收





