【pythonGUI专题】tkinter库的学习与使用(一)
tkinter是python的标准GUI库,无需额外下载,安装好python即可使用。
先用一个实例来初步体会 tkinter 库的使用方法.
import tkinter
window = tkinter.Tk() # 用Tk()方法创建主窗口
window.title(string = '窗口标题')
background = tkinter.Label(window,text = '窗口内容在此')
background.pack() #pack()方法用来设置窗口位置,大小等选项
tkinter.Button(window,text=("关闭"),command= window.quit).pack(side='bottom')
window.mainloop()
如果想让GUI应用程序能够在Windows下单独执行,必须将程序保存为.pyw文件,这样可以使用pythonw.exe来执行GUI应用程序,而不必打开python解释器,这样方便很多.
tkinter 包含15个控件, 这里列举出来方便忘记时查看:
控件名称 | 控件说明 |
---|---|
Button | 按钮控件;在程序中显示按钮。 |
Canvas | 画布控件;显示图形元素如线条或文本,用来画图形 |
Checkbutton | 多选框控件;用于在程序中提供多项选择框 |
Entry | 输入控件;单行文字域,用来收集键盘输入文本 |
Frame | 框架控件; 在屏幕上显示一个矩形区域,多用来作为其他控件的容器 |
Label | 标签控件; 定义一个文字或者是图片标签 |
Listbox | 列表框控件;一个选项列表, 用来显示一个字符串列表给用户, 用户可以从中选择 |
Menu | 菜单控件;用来定义菜单栏,下拉菜单和弹出菜单 |
Menubutton | 菜单按钮控件,用于显示菜单项。 |
Message | 消息控件;用来显示多行文本,与label比较类似, 用于定义对话框 |
Radiobutton | 单选按钮控件;定义一个单选的按钮 |
Scale | 范围控件;显示一个数值刻度,为输出限定范围的数字区间 |
Scrollbar | 滚动条控件,当内容超过可视化区域时使用,用于定义一个滚动条 |
Text | 文本控件;用于显示多行文本 |
Toplevel | 容器控件;和Frame比较类似,此控件有自己的最上层窗口,可以提供窗口管理接口 |
注意在tkinter中测量控件的大小都是默认以像素为单位的,如果要使用其他单位,要自己写上单位:
c(厘米), m(毫米), i(英寸), p(点, 1p = 1/72 i)
共有属性:
对于tkinter的每一个控件,都具有如下几个属性:
anchor | 定义控件在窗口内的位置或者文字信息在控件内的位置,可以是N, NE, E, SE, S, SW, W, NW 和CENTER |
---|---|
background(bg) | 定义控件的背景颜色,可以是16进制的RGB颜色区间[#000000,#ffffff],在windows环境下可以设置系统自带的”颜色名称常量” |
bitmap | 定义显示在控件内的位图(bitmap图片文件) |
borderwidth | 定义控件的边框宽度,单位为像素 |
command | 当控件有特定的动作发生时,定义这个属性(最常见的就是”关闭”按钮按下让窗口关闭) |
cursor | 定义当鼠标指针移动到这个控件上的时候鼠标指针的类型(常见的有 crosshair,watch(等待常用),xterm(文本编辑),fleur(拖拽),arrow(默认)) |
font | 如果控件支持标题文字,那么就可以对文字进行设置.font属性是一个元组格式:(字体,大小,字体样式). 字体样式有如下选择: bold, italic, underline,overstrike |
relief | 定义控件的边框形式,对于2D形式的边框,此属性可以是FLAT,SOLID,对于3D形式的边框,可以是 flat, groove, raised, ridge, solid, or sunken |
variable | 将控件的数值映射给一个变量,由变量的类型来设置这个属性如StringVar, IntVar, DoubleVar, BooleanVar, 这些变量可以由get(),set()方法读取和设置 |
image | 定义显示在控件内的图片 |
justify | 定义多行文字标题的排列方式,可以是 left,right,center |
padx, pady | 这是两个属性,用于定义控件内的文字与控件边框之间的水平或竖直距离,单位是像素 |
foreground(fg) | 定义控件的前景(文字)颜色 |
height | 对于Button,label或者Text控件,这个属性可以定义以”字符数目” 为单位的高度,其他控件则是以”像素”为单位 |
width | 与height对应,只不过是设置宽度 |
highlightbackground | 定义控件没有键盘焦点的时候,画highlight区域的颜色 |
highlightcolor | 定义控件由键盘焦点的时候,画highlight区域的颜色 |
highlightthickness | 定义highlight区域的宽度,单位是”像素” |
设置tkinter控件的位置
设置控件的位置有以下几个方法:
- pack() : 将控件设置在父控件之前,规划此控件在区块内的几何位置
- grid() : 将控件设置在父控件之前,规划此控件成一个类似表格的架构
-
place() : 将控件放置在父控件的特定位置
下面简单的调用一下这些方法, 有个初步认识:
pack()方法
pack()方法按照其内的属性设置,把控件放置在frame控件(窗体)或者窗口内。当设置了frame控件后,就可以把其他控件放入,Frame中储存控件的地方叫parcel
可设置的属性:
1. expand: 取值范围[0,1] 。可以让控件使用所有剩下的空间。当窗口大小改变的时候能让控件使用更多的空间。
2. fill:取值[x,y,both,none(不改变)]。决定控件如何填满parcel控件,这个属性必须在 expand=1 的时候才会有作用 。
3. ipadx, ipady: 此选项与fill选项共同使用,用于定义窗体内控件与窗体边界的距离,默认单位是像素,可以自己设置单位。
4. padx, pady : 定义控件之间的距离
5. side :定义控件放置的位置,可设置为 top, bottom, left, right
import tkinter
win = tkinter.Tk() # main windows
# the first frame
framel = tkinter.Frame(win,relief='raised',borderwidth=4)
framel.pack(side = 'top' , fill = 'both', ipadx=10, ipady=10,expand=0)
tkinter.Button(framel,text = 'button 1').pack(side='left',padx=10,pady=10)
tkinter.Button(framel,text = 'button 2').pack(side='left',padx=10,pady=10)
framel = tkinter.Frame(win,relief='groove',borderwidth=2)
framel.pack(side = 'bottom' , fill = 'x', ipadx=10, ipady=10,expand=1)
tkinter.Button(framel,text = 'button 4').pack(side='left',padx=10,pady=10)
tkinter.Button(framel,text = 'button 5').pack(side='left',padx=10,pady=10)
framel = tkinter.Frame(win,relief='ridge',borderwidth=5)
framel.pack(side = 'right' , fill = 'y', ipadx=10, ipady=10,expand=1)
tkinter.Button(framel,text = 'button 3').pack(side='left',padx=10,pady=10)
tkinter.Button(framel,text = 'button 6').pack(side='left',padx=10,pady=10)
win.mainloop()
grid()方法
grid() 方法依照表格的行列方式放置在窗口或窗口内,具有以下属性:
1. row 设置在表格中的第几列
2. column 设置在表格的第几行
3. columnspan 设置控件在表格中合并行的数目
4. rowspan 设置控件在表格中合并列的数目
实例:
import tkinter
win = tkinter.Tk()
framel = tkinter.Frame(win,relief='raised',borderwidth=2)
framel.pack(side='top',fill='both',ipadx = 5,ipady=5,expand=1)
for i in range(5):
for j in range(5):
tkinter.Button(framel,text1='('+str(i+1)+','+str(j+1)+')').grid(row=i,column=j)
tkinter.Button(framel,text='test').grid(row=2,column=2)
tkinter.Button(framel,text='test2').grid(row=3,columnspan=4) #(只是挡住了下面的而已)
win.mainloop()
place() 方法
place()方法设置控件在窗体或者窗口内的绝对位置或者相对位置,具有如下几个属性:
1. anchor : 定义控件在窗体或者窗口内的方位,可选择:‘n、ne、e、se、s、sw、w、nw、center’,默认是左上角nw
2. bordermode: 定义控件的坐标是否考虑边界宽度,分 outside 或者 inside
3. height,width:定义控件的高度和宽度,单位像素
4. x,y :定义控件的绝对水平位置
5. in: 定义控件相对于参考控件的位置
6. relheight,relwidth:定义控件相对于参考控件的高度或宽度
7. relx,rely: 定义控件相对与参考控件的水平,垂直距离
上一篇: Python学习笔记(持续更新)
推荐阅读
-
Python机器学习之scikit-learn库中KNN算法的封装与使用方法
-
深度学习 从零开始 —— 神经网络数学基础(一),学习Keras库的使用,神经网络简单流程,MNIST数据集使用
-
Python学习笔记-数据库的使用(一)
-
(一)基于Unity 3d UI框架学习记录,以及初识DOTween动画库的使用。
-
Oracle数据库关于约束的创建与使用(检查约束)学习讲解
-
Oracle数据库学习之表的创建与使用(修改表结构)不建议使用
-
长期使用中型Access数据库的一点经验与缺点
-
Oracle数据库知识学习:表的创建与使用(表的删除、闪回技术)实例
-
长期使用中型Access数据库的一点经验与缺点
-
[PHP]CodeIgniter学习手册(一):控制器Controller的介绍与使用