Tkinter是python自带的gui界面工具,作为非常强大的内置库tkinter,利用它可以很轻松做出一些简易的UI界面,Tkinter中给我们提供了15种控件供大家使用。
Tkinter绑定了 Python 的 Tk GUI 工具集 ,就是Python 包装的Tcl代码,通过内嵌在 Python 解释器内部的 Tcl 解释器实现, Tkinter的调用转换成 Tcl 命令,然后交给 Tcl 解释器进行解释,实现 Python 的 GUI 界面。对比Tk和其它语言的绑定,比如 PerlTk ,是直接由 Tk 中的 C 库实现的。
Tkinter优缺点:
历史最悠久, Python 事实上的标准 GUI , Python 中使用 Tk GUI 工具集的标准接口,已经包括在标准的 Python Windows 安 装中,著名的 IDLE 就是使用 Tkinter 实现 GUI 的创建的 GUI 简单,学起来和用起来也简单。
以下是实例代码:
代码语言:javascript复制#11.2.1窗体
import tkinter #导入 tkinter 模块
MainForm=tkinter.Tk() #建窗体实例
MainForm.geometry("250x150") #设置窗体物理大小(长x高)
MainForm.title("三酷猫") #设置窗体标题属性
MainForm['background']='LightSlateGray' #设置窗体背景颜色属性
btn1=tkinter.Button(MainForm,text="退出",fg='black') #窗体上创建 btn1 按钮
btn1.pack() #pack() 方法将 btn1 按钮放到窗体上
def fun_properry(event):
event.widget["activeforeground"]="red"
event.widget['text']="OK"
btn1.bind("<Enter>",fun_properry)
MainForm.mainloop() #启动窗体运行,并等待接收各种事件信息
运行效果:
代码语言:javascript复制#11.2.2
import tkinter #导入 tkinter 模块
MainForm= tkinter.Tk() #引用Tk()生成MainForm窗体实例
MainForm.geometry("250x150") #设置窗体大小
MainForm.title("三酷猫") #设置新的窗体标题
#MainForm.iconbitmap('图片路径') #设置窗体新图标
MainForm['background']='LightSlateGray' #设置窗体背景颜色
btn1=tkinter.Button(MainForm,text="退出",fg="black") #在窗体上创建 btn1 按钮
def turn_property(event): #自定义回调函数 trun_proerty
event.widget["activeforeground"]="red" #鼠标左键按下时,标题显示红色
event.widget["text"]="OK" #鼠标指针接触按钮时,标题变 OK
btn1.bind("<Enter>",turn_property) #bind()绑定鼠标进入事件
btn1.pack() #pack()方法将btn1放到窗体上
MainForm.mainloop() #启动主窗体事件循环等待
运行效果:
代码语言:javascript复制#11.3
import tkinter
MainFrom=tkinter.Tk()
MainFrom.geometry("250x150")
btn1=tkinter.Button(MainFrom,text="1",fg="black") #在窗体上创建按钮1实例
btn2=tkinter.Button(MainFrom,text="2",fg="black") #在窗体上创建按钮2实例
btn3=tkinter.Button(MainFrom,text="3",fg="black") #在窗体上创建按钮3实例
btn1.pack(side="top") #在窗体顶端对齐设置按钮1
btn2.pack(side="top") #在窗体顶端对齐设置按钮2
btn3.pack(side="top") #在窗体顶端对齐设置按钮3
MainFrom.mainloop() #开启主窗体事件循环等待
运行效果:
代码语言:javascript复制#11.4
import tkinter
MainFrom=tkinter.Tk()
MainFrom.geometry("250x100")
btn1=tkinter.Button(MainFrom,text="1",fg="black")
btn2=tkinter.Button(MainFrom,text="2",fg="black")
btn3=tkinter.Button(MainFrom,text="3",fg="black")
btn1.pack(side="left",padx="1m") #按钮1在窗体左对齐设置,间隔1mm
btn2.pack(side="left",padx="1m") #按钮2在窗体左对齐设置,间隔1mm
btn3.pack(side="left",padx="1m") #按钮3在窗体左对齐设置,间隔1mm
MainFrom.mainloop() #启动主窗体事件循环等待
运行效果:
代码语言:javascript复制#11.6
from tkinter import *
root=Tk() #创建窗体
m1=Menu(root) #创建菜单实例
root.config(menu=m1) #为窗体设置菜单属性
def callback(): #定义菜单鼠标单击事件回调函数
root.title("OK") #调用成功,在窗体标题上显示 OK
filemenu=Menu(m1) #在m1菜单实例上建立新的子菜单实例
m1.add_cascade(label="File",menu=filemenu) #在m1上设置子菜单名并关联子菜单1
filemenu.add_command(label="New",command=callback) #在子菜单增加选择项名称和事件
filemenu.add_command(label='Open...',command=callback) #增加 Open 选择项
filemenu.add_separator() #增加分割线
filemenu.add_command(label="Exit",command=callback) #增加 Exit 选择项
helpmenu=Menu(m1) #在m1上新创建帮助子菜单实例2
m1.add_cascade(label="Help",menu=helpmenu) #在m1上设置子菜单名并关联子菜单2
helpmenu.add_command(label="About...",command=callback) #Help 子菜单增加 About... 选择项
mainloop() #启动窗体循环功能
运行效果:
代码语言:javascript复制from tkinter import *
master=Tk()
master.geometry("700x600")
# ============================================= Layber 标签组件
l_show=Label(master,text="三酷猫:") #创建带标题的 Label 实例
l_show.pack(side="left") #带标题标签在窗体左对齐设置(1)
# ============================================= Entry 单行文本组件
e_show=Entry(master,width=10) #创建10个字符宽的单文本输入框
e_show.pack(side="left") #单文本框在窗体左对齐设置(3)
# ============================================= Text 单行文本组件
t_show=Text(master,width=10,height=4) #创建多行输入框
t_show.pack(side="bottom") #多行文本框在窗体底对齐设置(4)
# ============================================= Checkbutton 复选框组件
var=StringVar() #字符串变量子类,创建对应的实例1
c_show=Checkbutton(master,text="酷猫",variable=var,
onvalue="RGB",offvalue="L",fg="blue") #创建带蓝色标题的复选框
c_show.pack(side="top") #复选框在窗体顶端对齐设置
# ============================================= Radiobutton 单选组件
v=IntVar() #整型变量子类,创建对应的实例2
r_show=Radiobutton(master,text="One",variable=v,value=1) #创建单选框
r_show.pack(anchor=W) #单选框定位于窗体西边
# ============================================= Frame 框架组件
f_show=Frame(master,height=200,width=200,bd=1,bg='white',relief=SUNKEN) #创建框架
f_show.pack(anchor="center") #定位于窗体中间位置(7)
# ============================================= LabelFrame 标签框架组件
lf_show=LabelFrame(master,text="Group",padx=5,pady=5) #创建标签框架
lf_show.pack(padx=10,pady=10,expand='yes') #相对于(7)位置设置(8)位置
e1=Entry(lf_show,width=10) #在标签框架容器里增加文本输入框1
e1.pack() #在标签框架里顶对齐文本输入框1
e2=Entry(lf_show,width=10) #在标签框架容器里增加文本输入框2
e2.pack() #在标签框架里顶对齐文本输入框2
# ============================================= ListBox 列表框组件
lb_show=Listbox(master,bg="yellow",height=5,width=20) #创建黄色列表框实例
lb_show.pack(side="top") #相对于(8)进行顶对齐列表框(9)
for item in ["one","tow","three","four"]:
lb_show.insert(END,item) #循环插入4个值到列表框中
# ============================================= Scrollbar 滚动条组件
s_show=Scrollbar(master) #创建滚动条实例
s_show.pack(side=RIGHT,fill=Y) #设置滚动条为右边且竖向滚动
lb_show1=Listbox(master,fg='red',height=5,width=20) #创建需要滚动条的列表框
lb_show1['yscrollcommand']=s_show.set #把滚动条对象赋给对象列表框属性
lb_show1.pack(side="right") #把滚动条的列表框定位(9)的右边(10)
for item in ["1","2","3","4","5","6","7"]:
lb_show1.insert(END,item)
s_show.config(command=lb_show1.yview) #滚动条与列表框绑定连动命令属性
# ============================================= Scale 刻度条组件
sc_show=Scale(master,from_=0,to=100) #创建长度为100的刻度条
sc_show.pack(side="right") #在(10)左边显示刻度条(11)
# ============================================= Message及Button 组件
def showMessage(event): #自定义按钮鼠标事件回调函数
m1=Message(master,text="非常好!",width=60) #调用 Message 组件显示信息
m1.pack() #在窗体以默认方式设置 Message 信息(12)
b_show=Button(master,text="确认",fg="black") #创建按钮实例
b_show.bind("<Button-1>",showMessage) #按钮对象绑定鼠标回调事件
b_show.pack(side="left") #在窗体左对齐设置按钮(13)
# ============================================= Spinbox 组件
sb_show=Spinbox(master,from_=0,to=10) #创建取值范围在0-10的输入框
sb_show.pack(side="left") #在窗体左对齐设置(14)
# ============================================= Toplevel 子窗体组件
tL_show=Toplevel(master) #创建子窗体实例
tL_show.wm_attributes("-topmost",1) #设置该子窗体始终在界面最前面(15)
tL_show.title("OK!") #设置子窗体标题为OK!
t1_show=Text(tL_show,width=10,height=4) #在该窗体增加输入文本框1
t2_show=Text(tL_show,width=10,height=4) #在该窗体增加输入文本框2
t1_show.pack() #在子窗体设置文本输入框1位置
t2_show.pack() #在子窗体设置文本输入框2位置
# ============================================= PanedWindow 组件
pw=PanedWindow(orient=VERTICAL,bg="green") #创建带绿色背景的 PanedWindow 实例
pw.pack(fill=BOTH,expand=1) #在窗体上设置该组件(16)
for w in [Label,Button,Checkbutton,Radiobutton]: #循环生成4个组件
pw.add(w(pw,text="可上下移动")) #添加到 PanedWindow 组件里,执行后该组件里的4个组件可以上下移动
mainloop() #启动窗体信息循环功能
运行效果:
代码来源:
Python编程从零基础到项目实战(微课视频版)