学习笔记-Python Tkinter

1.简介

  • Tkinter是 Python 的标准 GUI 库。Python 使用 Tkinter 可以快速的创建 GUI 应用程序。
    由于 Tkinter 是内置到 python 的安装包中、只要安装好 Python 之后就能 import Tkinter 库、而且 IDLE 也是用 Tkinter 编写而成、对于简单的图形界面 Tkinter 还是能应付自如

2.常用控件

  • Label(标签,就是界面上显示的字)
  • Entry(输入框)
  • Button(按钮,可以绑定各种封装函数)
  • Radiobutton(单选框)
  • Checkbuttion(复选框)
  • messagebox(消息弹出框)
  • Text(文本编辑框)
  • Listbox(列表控件)
  • Scrollbar(滚条控件)

3.控件参数

  • title:设置窗口的标题
参数 描述 实例
title 窗口标题 tk.TK().title("xxx")
geometry 设置窗口大小,中间不能是*,而是x tk.TK().geometry("100X100")
resizable 设置窗口是否可以变化高(height)、 宽(width),True为可以变化,False为不可变化 tk.TK().resizable("width=False, height=True")
  • Label:标签
参数 描述 实例
text 需要在界面显示的Label标签内容 Label(root,text=‘xxxxx’)
height 组件的高度(所占行数) Label(root,text=‘xxxxx’,height=2)
width 组件的宽度(所占字符个数) Label(root,text=‘xxxxx’,height=2,width=20)
fg 前景字体颜色 Label(root,text=‘xxxxx’,fg='blue')---显示字体为蓝色
bg 背景字体颜色 Label(root,text=‘xxxxx’,bg='blue')---显示字体为蓝色
justify 多行文本的对齐方式,可选参数为: LEFT、 CENTER、RIGHT,分别是向左、居中、向右对齐 Label(root,text=‘xxxxx’,justify=tk.LEFT)
padx 文本左右两侧的空格数(默认为1) Label(root,text=‘xxxxx’,padx=5)
pady 文本上下的空格数(默认为1) Label(root,text=‘xxxxx’,pady=5)
font 字体格式和大小 Label(Label(root,text=‘xxxxx’,font=("微软雅黑", 12))
photo 设置背景图片,事先需要指定图片路径 photo=tk.PhotoImage(file='指定图片路径')Label(root,text=‘xxxxx’,image=photo)
compound 图像背景图位置,可选参数为:botton、top、right、left、center(下、上、右、左、文字覆盖图像) photo=tk.PhotoImage(file='指定图片路径')Label(root,text=‘xxxxx’,image=photo,compound=tk.center)
  • Button:按钮
参数 描述 实例
text 按钮图标显示内容 Button(root,text='xxxx')
height 组件的高度(所占行数) Button(root,text='xxxx',height=2)
width 组件的宽度(所占字符个数) Button(root,text='xxxx',height=2,width=10)
fg 前景字体颜色 Button(text='xxxx',fg='blue')---显示按钮字体颜色为蓝色
bg 背景字体颜色 Button(text='xxxx',bg='blue')---显示按钮字体颜色为蓝色
activebackground 按钮按下时的背景颜色 Button(root,text='xxxx',activebackground='grey')
activeforeground 按钮按下时的前景字体颜色 Button(root,text='xxxx',activeforeground='black')
justify 多行文本的对齐方式,可选参数为: LEFT、 CENTER、RIGHT,分别是向左、居中、向右对齐 Button(root,text=‘xxxxx’,justify=tk.LEFT)
padx 文本左右两侧的空格数(默认为1) Button(root,text=‘xxxxx’,padx=5)
pady 文本上下的空格数(默认为1) Button(root,text=‘xxxxx’,pady=5)
command 按钮触发执行的命令(函数) Button(root,text='xxxx',command=函数)
  • Entry:输入框
参数 描述 实例
width 组件的宽度(所占字符个数) Entry(root,width=20)
fg 前景字体颜色 Entry(root,fg='blue')
bg 背景字体颜色 Entry(root,bg='blue')
show 将Entry框中的文本替换为指定字符,用于输入密码等,如设置 show="*" Entry(root,show="*")
state 设置组件状态,默认为normal,可设置为:disabled—禁用组件,readonly—只读 Entry(root,state=readonly)
textvariable 指定变量,需要事先定义一个变量,在Entry进行绑定获取变量的值 text=tk.StringVar() Entry(root,textvariable=text)
  • Radiobutton:单选框
参数 描述 实例
text 单选框文本显示内容 Radiobutton(root,text='xxxx')
variable 单选框索引变量,通过变量的值确定哪个单选框被选中。一组单选框使用同一个索引变量,需要事先设定一个变量 color=tk.StringVar() Radiobutton(root,variable=color)
value 单选框选中时设定变量的值 color=tk.StringVar()Radiobutton(root,variable=color,value='red'
command 单选框选中时执行的命令(函数) color=tk.StringVar()Radiobutton(root,variable=color,value='red',command=函数)
  • Checkbuttion:复选框
参数 描述 实例
text 复选框显示的文本 Checkbutton(root,text='xxxx')
variable 复选框索引变量,通过变量的值确定哪些复选框被选中。每个复选框使用不同的变量,使复选框之间相互独立,事先需要定义不同的变量 typeBlod=tk.IntVar()Checkbutton(root,variable=typeBlod)
onvalue 复选框选中(有效)时变量的值,可以通过计算值来判断分支不同的效果,计算值由自己设定 typeBlod=tk.IntVar()Checkbutton(root,variable=typeBlod,onvalue=1)
offvalue 复选框未选中(无效)时变量的值,可以通过计算值来判断分支不同的效果,一般设置为0 typeBlod=tk.IntVar()Checkbutton(root,variable=typeBlod,onvalue=1,offvalue=0)
command 复选框选中时执行的命令(函数) typeBlod=tk.IntVar()Checkbutton(root,variable=typeBlod,onvalue=1,offvalue=0,command=函数)
  • Text:文本框
参数 描述 实例 备注
t.insert(mark, 内容) 插入文本信息,mark可以是行号,或者特殊标识 t=tk.Text()t.insert(END,'插入的文本信息') INSERT:光标 的插入点, CURRENT:鼠标的当前位置所对应的字符 ,END:Textbuffer的最后一个字符,SEL_FIRST:选中文本域的第一个字符,如果没有选中区域则会引发异常,SEL_LAST:选中文本域的最后一个字符,如果没有选中区域则会引发异常
t.delete(mark1, mark2) 删除文本信息 INSERT:光标的插入点, CURRENT:鼠标的当前位置所对应的字符 ,END:Textbuffer的最后一个字符,SEL_FIRST:选中文本域的第一个字符,如果没有选中区域则会引发异常,SEL_LAST:选中文本域的最后一个字符,如果没有选中区域则会引发异常
  • ListBox:列表控件
参数 描述
master 代表了父窗口
bg 背景色,如bg=”red”, bg="#FF56EF"
fg 前景色,如fg=”red”, fg="#FF56EF"
height 设置显示高度、如果未设置此项,其大小以适应内容标签
width 设置显示宽度,如果未设置此项,其大小以适应内容标签
status 设置组件状态;正常(normal),激活(active),禁用(disabled)
bd 设置Button的边框大小;bd(bordwidth)缺省为1或2个像素
selectmode 选择模式,MULTIPLE:多选 BROWSE:通过鼠标的移动选择 EXTENDED:shift和ctrl配合使用
listvariable 设置listvariable属性
relief 指定外观装饰边界附近的标签,默认是平的,可以设置的参数:flat、groove、raised、ridge、solid、sunken

常用函数

函数 描述
insert 追加item,如listbox.insert(0,"addBox1","addBox2")
delete 删除item,如listbox.delete(3,4),删除全部(0,END)
select_set 选中,如listbox.select_set(0,2)
select_clear 取消选中如listbox.select_clear(0,1)
get 返回制定索引的项值,如listbox.get(1);返回多个项值,返回元组,如listbox.get(0,2);返回当前选中项的索引listbox.curselection()
curselection() 返回当前选中项的索引,如listbox.curselection()
selection_includes 判断当前选中的项目中是否包含某项,如listbox.selection_includes(4)

消息弹出框

属性 描述 举例
showinfo info信息提示,弹出提示框 msgbox.showinfo("INFO","Showinfo test"),INFO是提示框title,Showinfo test是提示框内容
showwarning warning警告信息提示,弹出警告框 框 msgbox.showwarning("WARNING","Warning test"),WARNING是警告框title,Warning test是警告框内容
showerrot error错误信息提示,弹出错误框 msgbox.showerror("ERROR","Error test"),ERROR是错误框title,Error test是错误框内容
askquestion 提问窗口提示 msgbox.askquestion("Question","Askquestion test")
askokcancel 确定与取消窗口提示 msgbox.askokcancel("OkCancel","Askokcancel test")
askretrycancel 确定与取消窗口提示 msgbox.askretrycancel("Retry","Askretrycancel test")
askretrycancel 重试与取消窗口提示 msgbox.askretrycancel("Retry","Askretrycancel test")

4.构建框架

  • frame:
    内嵌框架,可以在一个图形界面中设定多个frame框架,也可以在frame再次嵌套frame
frame=tk.Frame(父类框架)
frame.pack()
  • pack属性:
属性 描述 备注 其他
fill 设置组件是否向水平或垂直方向填充,包含X、Y、BOTH、NONE fill = X(水平方向填充) fill = Y(垂直方向填充)fill = BOTH(水平和垂直)NONE 不填充
expand 设置组件是否展开,当值为YES时,side选项无效。组件显示在父容器中心位置;若fill选项为BOTH,则填充父组件的剩余空间。它表示某个控件在fill那个方向,要不要把空白的地方分配给它 YES 、NO(1、0) 若expand=True或者expand=1,表示在fill那个方向,把空白处都分给这个控件,让它尽量占满。若expand=False或者expand=0,表示在fill那个方向,有空也不给它。
side 设置组件的对齐方式 LEFT、TOP、RIGHT、BOTTOM 值为左、上、右、下
ipadx、ipady 设置x方向(或者y方向)内部间隙(子组件之间的间隔),它表示某个控件的内边距,即控件边缘和这个控件内容(文字图片什么的)的间距 可设置数值,默认是0 非负整数,单位为像素
padx、pady 设置x方向(或者y方向)外部间隙(与之并列的组件之间的间隔),它表示某个控件的外边距,即控件边缘和这个控件所在容器之间的间距 可设置数值,默认是0 非负整数,单位为像素
anchor 锚选项,当可用空间大于所需求的尺寸时,决定组件被放置于容器的何处,它表示某个控件在容器里的摆放方式,是左还是右,是上还是下 N、E、S、W、NW、NE、SW、SE、CENTER(默认值为CENTER) 表示八个方向以及中心
  • grid属性:
属性 描述 举例
row,column 它表示某个控件要放在第几行网格或第几列网格,下标都是从0开始计的 xxx.grid(column=1,row=1)
rowspan,columnspan 它表示某个控件将会竖着跨几行或横着跨几列,默认都是1 xxx.grid(column=1,row=1,columnspan=2)xxx.grid(column=1,row=1,rowspan=2)
padx,pady 它表示某个控件的外边距,即控件边缘和这个控件所在容器之间的间距,单位是像素 xxx.grid(column=1,row=1,padx=10)xxx.grid(column=1,row=1,pady=10)
ipadx,ipady 它表示某个控件的内边距,即控件边缘和这个控件内容(文字图片什么的)的间距,单位是像素 xxx.grid(column=1,row=1,ipadx=10)xxx.grid(column=1,row=1,ipady=10)
sticky 它表示某个控件在网格里的摆放方式,是左还是右,是上还是下,即使窗口被拉大也会按照指定方向对齐 若sticky=N,表示North,尽可能往北面/上面停靠若sticky=S,表示South,尽可能往南面/下面停靠。若sticky=W,表示West,尽可能往西边/左边停靠。若sticky=E,表示East,尽可能往东边/右边停靠。若sticky=NS,表示NorthSouth,尽可能往南北方向/上下拉伸。若sticky=EW,表示EastWest,尽可能往东西方向/左右拉伸。若sticky=CENTER,尽可能往中心停靠。
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,108评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,699评论 1 296
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,812评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,236评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,583评论 3 288
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,739评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,957评论 2 315
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,704评论 0 204
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,447评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,643评论 2 249
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,133评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,486评论 3 256
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,151评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,108评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,889评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,782评论 2 277
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,681评论 2 272

推荐阅读更多精彩内容