Python打包GUI界面组件汇总,Tkinter(TK)实例代码
时间:2022-07-22
本文章向大家介绍Python打包GUI界面组件汇总,Tkinter(TK)实例代码,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
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 简单,学起来和用起来也简单。
以下是实例代码:
#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() #启动窗体运行,并等待接收各种事件信息
运行效果:
#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() #启动主窗体事件循环等待
运行效果:
#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() #开启主窗体事件循环等待
运行效果:
#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() #启动主窗体事件循环等待
运行效果:
#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() #启动窗体循环功能
运行效果:
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编程从零基础到项目实战(微课视频版)
- BZOJ 2463: [中山市选2009]谁能赢呢?(新生必做的水题)
- 10个Python面试常问的问题
- 关关的刷题日记11——Leetcode 1. Two Sum 方法2、3
- 计蒜客:百度的科学计算器(简单)【python神解】
- 关关的刷题日记12——Leetcode 189. Rotate Array 方法1、2、3
- 关关的刷题日记13——Leetcode 414. Third Maximum Number
- 关关的刷题日记14——Leetcode 167. Two Sum II - Input array is sorted
- 51Nod 1083 矩阵取数问题(矩阵取数dp,基础题)
- 【专知-关关的刷题日记15】Leetcode 27. Remove Element 方法1、2、3
- [接口测试 - 基础篇] 07 来来来,一起读写excel玩玩之一
- 时间序列分析算法【R详解】
- 【专知-关关的刷题日记16】Leetcode 88. Merge Sorted Array
- [接口测试 - 基础篇] 06 好吧也来解析下html
- [接口测试 - 基础篇] 05 好讨厌的xml解析
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- C#使用MemoryStream类读写内存
- C# WPF基础之Timer
- Angular 父子Component的数据绑定实现
- C# WPF线程操作
- Angular 界面元素的条件渲染
- mysqlbinlog命令详解 Part 2 - MySQL 事件类型
- Angular list列表的事件响应实现
- Angular list列表绑定的一个例子
- Angular双向绑定的一个例子
- mysqlbinlog命令详解 Part 3 - 查看十六进制格式内容
- MySQL information_schema详解 CHARACTER_SETS 表
- 彻底弄懂 Unicode 编码
- 两种使用代码获得SAP CRM product sales status的办法
- C#: "$"作用和用法
- SAP ABAP字符和字符串变量隐式转换的一些规则