基于tkinter模块创建GUI程序(python)
文章目录
- 前言
- 一、Tkinter是什么?
- 二、使用步骤
- 1.创建应用程序的主窗口对象(根窗口)
- 2.tkinter根窗口
- 3.组件拼图
- 4.Label标签
- 布局管理系统
- 5.pack布局管理器
- 6.grid布局管理器
- 7.place布局管理器
- 事件处理
- 8.command事件处理
- 9.bind事件处理
- 菜单
- 10.顶级菜单
- 11.下拉菜单
- 总结
前言
GUI(Graphics User Interface)使用图形用户界面编程,快速实现图形界面和用户的交互。(早期的都是基于控制台的程序,用户通过控制台和程序交互)。使用的模块(库文件):wxPython库和PyQT库文件
图形界面的是由一个个组件组成的,如图搭积木般拼装在一起,有的可以放其他的组件的组件就是容器
一、Tkinter是什么?
tkinter(TK interface)是Python的标准GUI库,支持跨平台的GUI程序开发,tkinter适合小型的GUI程序编写,也适合初学者学习GUI编程。
二、使用步骤
1.创建应用程序的主窗口对象(根窗口)
1>.通过类TK的无参构造方法函数
2>.在主窗口中,添加各种可视化组件,如按钮(Button)等等
3>.通过几何布局管理器,管理组件大小和位置
4>.事件绑定(如:单击事件等)
代码如下(示例):
#导入tkinter的库文件
from tkinter import *
from tkinter import messagebox
#创建根窗口
root = Tk()
#添加各种组件(按钮)
btn1 = Button(root)
#设置button的文字
btn1["text"]("请点我")
#设置几何布局
btn1.pack()
#创建事件方法
def click_bt(e):messagebox.showinfo("点击事件","点击完成")print('点击事件触发')
#组件绑定绑定事件
btn1.bind("<Button-1>",clikc_bt)
#使窗口持续运行
root.mainloop()
2.tkinter根窗口
通过如下方法设置根窗口:
方法 | 介绍 |
---|---|
title() | 设置窗口框体名称 |
resizable() | 设置窗口框体可调性 |
geometry() | 设置主窗体大小,接收一个"宽x高+水平坐标+竖直坐标"的字符串 |
quit() | 退出 |
update() | 刷新页面 |
root = Tk()
#设置窗口标题
root.title('tkinterDemo')
#设置窗口大小和位置
root.geometry("300x400+200+200")
3.组件拼图
常用组件列表:
Tkinte中r类名 | 中文名称 | 介绍 |
---|---|---|
Toplevel | 顶层 | 容器,为其他组件提供单独容器,类似窗口 |
Button | 按钮 | 按钮组件 |
Canvas | 画布 | 提供绘图功能,直线,矩形等 |
Checkbutton | 复选框 | 提供用户勾选的复选框 |
Entry | 单行输入框 | 可进行单行输入 |
Frame | 容器 | 组织其他GUI组件 |
Label | 标签 | 显示不可编辑文本或图标 |
LabelFrame | 容器 | 可添加标题的容器组件 |
Listbox | 列表框 | 列出多个选项,看进行选择 |
Menu | 菜单 | 菜单组件 |
Menubutton | 菜单按钮 | 包含菜单的按钮(下拉式,层叠式等) |
OpiontMenu | 菜单按钮 | Menubutton子类,可通过按钮打开菜单 |
Message | 消息框 | 可显示多行文本,类似标签 |
4.Label标签
Label标签属性:
width,height | 宽,高 |
---|---|
font | 指定字体和大小 |
image | Label显示图像,仅支持gif格式 |
fg和bg | 前景色和背景色 |
justify | 多行文字对齐(left/center/right) |
布局管理系统
5.pack布局管理器
pack()方法可接收参数,以调整组件的布局属性。pack()方法常用的布局属性如下:
属性 | 说明 |
---|---|
expand | 设置组件的填充方式,True组件进行扩充填充 |
fill | 设置组件是否填充额外空间,取值为none、x、y、both |
side | 设置组件的分布式布局,取值为TOP(默认)、BOTTOM、LEFT或RIGHT |
6.grid布局管理器
grid布局将父组件分割成一个二维表格,子组件放置在由行/列确定的单元格中,可以跨越多行/列;grid布局中的列宽由列中最宽单元格确定。
属性 | 说明 |
---|---|
row | 表示组件所在行 |
column | 表示组件所在列 |
rowspan | 表示组件占据的行数 |
7.place布局管理器
place布局可以将组件放在一个特定位置。分为绝对布局和相对布局,与pack和grid相比place更加灵活。通过组件的place()方法可以实现place布局管理,常用属性:
属性 | 说明 |
---|---|
anchor | 组件其他选项的确切位置 |
relx,rely | 相对窗口宽度和高度位置,取值范围[0,1.0] |
x,y | 绝对布局的坐标(px) |
事件处理
8.command事件处理
tkinter中将用户操作称为事件,如点击鼠标,移动鼠标,键盘按下等等
程序对事件的处理常常在函数或方法中,简单的事件通过command选项绑定,当由事件产生时,相应组件的command选项绑定事件就会被出发
9.bind事件处理
tkinter提供了更加灵活的事件处理方式:bind绑定事件,此方式通过组件的bind方法实现,格式如下: bind(event,method)
事件类型 | 讲解 |
---|---|
Activate | 组件从未激活到激活触发事件 |
Button | 点击鼠标触发事件,detail可指定具体按下哪个键 :Button-1 鼠标左键 / Button-2 鼠标中键/ Button-3 鼠标右键/ Button-4 滚轮上滚/ Button-5 滚轮下滚 |
ButtonRelease | 用户释放鼠标按键触发的事件 |
KeyPress | 用户按下键盘按键触发的事件 |
Configure | 组件尺寸发生变化触发的事件,detail可指定哪个按键 |
Enter | 鼠标进入组件触发的事件(不是用户按下Enter键) |
Motion | 鼠标在组件内移动的整个过程都会触发的事件 |
事件字符串modifer的取值:
modifier | 含义 |
---|---|
Alt | 按下Alt键时 |
Any | 表示任何类型按钮被按下时 |
Control | 当按下Contorol键时 |
Double | 连续两个事件被触发时 |
Shift | 按下shift时 |
Triple | 三个事件被连续触发 |
tkinter允许事件绑定在类上,此类的任何一个实例都会触发事件
如果想要将一个事件绑定在程序所有组件上,调用bind_all()函数
菜单
10.顶级菜单
顶级菜单是图形窗口中最基础的菜单,此菜单通常包含多个选项,固定于窗口顶部。
tkinter库中Menu类的Menu()创建顶级菜单对象,使用菜单add_command()方法添加选项,并用窗口组件的menu将菜单添加到窗口
11.下拉菜单
顶级菜单每个选项可以有子菜单,使用菜单的add_cascade()方法,可以将一个菜单和另一个菜单的选项级联,为菜单选项创建子菜单(下拉菜单)
总结
tkinter是比较基础的python GUI的库文件,便于学习,也可以为以后学习打基础
基于tkinter模块创建GUI程序(python)相关推荐
- Python 基于tkinter模块的GUI可视化学生成绩管理系统实现(含文件保存)
学生成绩管理系统 1. 标准模块导入 2.完整代码 3.文件保存模块 作者:潇 版本:1.0 面向对象,带日志,带异常处理的,带密码加密 第一次执行会生成数据库和csv文件,以后添加的数据会自动保存到 ...
- python弹球小游戏程序_Python基于Tkinter模块实现的弹球小游戏
本文实例讲述了Python基于Tkinter模块实现的弹球小游戏.分享给大家供大家参考,具体如下: #!usr/bin/python #-*- coding:utf-8 -*- from Tkinte ...
- 使用Python中的tkinter模块实现GUI界面的学生信息管理系统
本文只有代码,介绍了有关GUI界面的学生信息管理系统的实现. 已经过调试没有很大问题. 如有错误,还请批评指正. 1.导入tkinter模块 import tkinter as tk from tki ...
- Python调用pikepdf模块解密PDF文件(使用tkinter模块绘制GUI)
Python调用pikepdf模块解密.合并PDF文件(使用tkinter模块绘制GUI) 安装模块 pip install pikepdf 代码 #!/usr/bin/pythonimport os ...
- 树回归--python Tkinter库创建GUI(2)
简单的Tkinter库创建GUI的例子可参考: http://blog.csdn.net/lilong117194/article/details/78456376 下面是代码: # -*- codi ...
- 计算机网络课程设计--基于TCP协议网上聊天程序--python实现带图形界面--socket--多线程
基于TCP协议网上聊天程序 引言 21世纪是一个以网络为核心的信息时代,要实现信息化,就必须依靠完善的网络.而随着计 ...
- python安装tkinter模块_详解python tkinter模块安装过程
引言: 在Python3下运行Matplotlib之时,碰到了"No module named _tkinter"的问题,花费数小时进行研究解决,这里讲整个过程记录下来,并尝试分析 ...
- python窗口显示表格_Python tkinter Treeview创建GUI表格(可编辑、新建单元格)
版本:Python3.7 1.使用Treeview创建表格界面 from tkinter import ttk from tkinter import * root = Tk() # 初始框的声明 c ...
- 基于tkinter的随机抽奖程序(每天一个python小项目)
import csv import tkinter as tk import tkinter.messagebox import datetime import pandas as pd import ...
最新文章
- mysql json匹配key为数值_干货篇:一篇文章让你——《深入解析MySQL索引原理》
- 计算机在人力资源管理中的应用浅谈,计算机技术在人力资源管理工作中的应用.doc...
- 为什么人会摆高姿态_为什么感情相处中不要随意掏心掏肺?
- CC++运算符优先级
- 一文详解 Dubbo 注册发现流程
- 正则表达式入门教程-连载(2)-正则表达式引擎怎么工作的
- docker~aspnetcore2.0镜像缺少libgdiplus问题
- Unity3D基础19:Tag标签
- Android修改状态栏的背景颜色
- bzoj1076 奖励关(概率dp)(状态压缩)
- 差分放大电路及动态分析
- 基于cosmol软件的光纤热力学分析
- python中的dic.items(), dic.keys(), dic.values()
- chmod命令优美的用法
- Hystrix流程分析及断路器工作原理
- pug模板语法在vue中的使用--HTML的模板引擎
- MAC下拼音输入法不显示汉字提示
- 2313 Problem B	魂之挽歌
- U盘安装原版Win7或Win8教程
- 泪水,你看见了什么?
热门文章
- Python知识整理_1
- Hibernate无法自动建表的缘故
- 创建了一个表之后怎么再次在表中添加字段和字段显示位置_筛选数据透视表中的数据...
- 【Flink】Flink 1.13 Flink SQL 新特性 性能优化 时区 时间 纠正
- 90-40-010-源码-CUBE-引擎为MR写入Habse的构建
- 【HttpClient】httpclient之post 方法(参数为Map类型)
- 【Flink】flink消费kafka报错 KafkaConsumer.assign Ljava/util/List
- 【Flink】Flink 1.9 写入 es6 案例
- maven的pom.xml文件
- 《spring-boot学习》-05-spring boot中redis应用