引言:
1.Tkinter 模块是python的标准Tk GUI工具包的接口,是python的内置模块,直接导入即可。
2.Tkinter 在python2和python3中的变化较大,在python2中叫Tkinter,在python3中叫tkinter 。
3.本文是在python2.7版本测试
一.创建第一个窗口
from Tinter import * #导入Tkinter这个模块
root=Tk() #对Tk这个类实例话
root.mainloop() #进行事件循环
注:
Tk类代表大多数应用程序主窗口的高层空间,继承自两个类(Misc和Wm),即所有的部件都需要先创建它
二.组件(Widget):大小、位置和功能
1.Label:
说明:标签
用法:Label(根对象,[属性列表(用字典的形式)])
例子:name=Label(root,name=‘name‘,bg=‘green‘)
2.Button:
说明:按钮
用法:Button(根对象,[属性列表(用字典的形式)])#command属性可以用来绑定按钮点击事件
例子:
def push():
print ‘you push me‘
btn=Button(root,text=‘push‘,command=push)
3.Frame
说明:创建矩形区域,作为容器
用法:Frame(根对象,[属性列表(用字典的形式)])
例子:
frm=Frame(root)
#left
frm_L=Frame(frm)
Label(frm_L,text=‘left_top‘).pack(side=TOP)
Label(frm_L,text=‘left_bottom‘).pack(side=TOP)
frm_L.pack(side=LEFT)
#right
frm_R=Frame(frm)
Label(frm_R,text=‘right_top‘).pack(side=TOP)
Label(frm_R,text=‘right_bottom‘).pack(side=TOP)
frm_R.pack(side=RIGHT)
frm.pack()
4.Tkinter 中的21个核心组件
Toplevel、Label、Button、Canvas、Checkbutton、Entry、Frame、LabelFrame、Listbox、Menu、Menubutton、Message、OptionMenu、PaneWindow、RadioButton、Scale、Scrollbar、Spinbox、Text、Bitmap、Image
三.布局
1.pack布局
<1>使用pack函数,组件默认依次向下排;
<2>pack函数的参数:
- side:指定停靠在那个方向,可取值LEFT RIGHT TOP BOTTOM
- fill:指定填充方向,可取值X Y BOTH NONE
- expand:是否拉伸,可取值YES NO
- anchor:可取值N E S W或者组合
pack(side=LEFT,expand=NO,fill=X)
2.grid网格布局
grid函数参数:
- row表示行,column表示列
- sticky决定组件是从哪个方向开始的,可取值:N E W S
- rowspan表示跨越的行数,columnspan表示跨越的列数
label.grid(row=1,column=0)
四.事件
使用bind()函数进行事件的绑定
窗体对象.bind(事件类型,回调函数)
五.对话框与消息框
1.消息框
from tkMessageBox import *
print showerror(title=‘‘,message=‘‘)
#其中,还有其他类型消息框,show...,ask...。
2.对话框
<1>模态对话框SimpleDialog
from SimpleDialog import *
dlg=SimpleDialog(root,text=‘‘,buttons=[‘Yes‘,‘NO‘,...])
print dlg.go()#用户点击了那个按钮
<2>使用tkSimpleDialog模块
from tkSimpleDialog import *
print askfloat(title=‘‘,prompt=‘‘,minivalue=0,maxvalue=100)
#与askfloat()相同的方法还有ask integer、asserting,只不过属性有所不同
<3>文件对话框
from FileDialog import *
fileDlg=LoadFileDialog(root)
print fd.go()#返回用户选中的文本路径
fileDlg=SaveFileDialog(root)#保存文件
print fd.go()
六.手绘图形
can=Canvas(root,width=300,height=50)
can.create_line((0,0),(200,200),width=4)
版权声明:本文为博主原创文章,未经博主允许不得转载。