文章目录

  • 前言
  • 一、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)相关推荐

  1. Python 基于tkinter模块的GUI可视化学生成绩管理系统实现(含文件保存)

    学生成绩管理系统 1. 标准模块导入 2.完整代码 3.文件保存模块 作者:潇 版本:1.0 面向对象,带日志,带异常处理的,带密码加密 第一次执行会生成数据库和csv文件,以后添加的数据会自动保存到 ...

  2. python弹球小游戏程序_Python基于Tkinter模块实现的弹球小游戏

    本文实例讲述了Python基于Tkinter模块实现的弹球小游戏.分享给大家供大家参考,具体如下: #!usr/bin/python #-*- coding:utf-8 -*- from Tkinte ...

  3. 使用Python中的tkinter模块实现GUI界面的学生信息管理系统

    本文只有代码,介绍了有关GUI界面的学生信息管理系统的实现. 已经过调试没有很大问题. 如有错误,还请批评指正. 1.导入tkinter模块 import tkinter as tk from tki ...

  4. Python调用pikepdf模块解密PDF文件(使用tkinter模块绘制GUI)

    Python调用pikepdf模块解密.合并PDF文件(使用tkinter模块绘制GUI) 安装模块 pip install pikepdf 代码 #!/usr/bin/pythonimport os ...

  5. 树回归--python Tkinter库创建GUI(2)

    简单的Tkinter库创建GUI的例子可参考: http://blog.csdn.net/lilong117194/article/details/78456376 下面是代码: # -*- codi ...

  6. 计算机网络课程设计--基于TCP协议网上聊天程序--python实现带图形界面--socket--多线程

                                              基于TCP协议网上聊天程序 引言 21世纪是一个以网络为核心的信息时代,要实现信息化,就必须依靠完善的网络.而随着计 ...

  7. python安装tkinter模块_详解python tkinter模块安装过程

    引言: 在Python3下运行Matplotlib之时,碰到了"No module named _tkinter"的问题,花费数小时进行研究解决,这里讲整个过程记录下来,并尝试分析 ...

  8. python窗口显示表格_Python tkinter Treeview创建GUI表格(可编辑、新建单元格)

    版本:Python3.7 1.使用Treeview创建表格界面 from tkinter import ttk from tkinter import * root = Tk() # 初始框的声明 c ...

  9. 基于tkinter的随机抽奖程序(每天一个python小项目)

    import csv import tkinter as tk import tkinter.messagebox import datetime import pandas as pd import ...

最新文章

  1. mysql json匹配key为数值_干货篇:一篇文章让你——《深入解析MySQL索引原理》
  2. 计算机在人力资源管理中的应用浅谈,计算机技术在人力资源管理工作中的应用.doc...
  3. 为什么人会摆高姿态_为什么感情相处中不要随意掏心掏肺?
  4. CC++运算符优先级
  5. 一文详解 Dubbo 注册发现流程
  6. 正则表达式入门教程-连载(2)-正则表达式引擎怎么工作的
  7. docker~aspnetcore2.0镜像缺少libgdiplus问题
  8. Unity3D基础19:Tag标签
  9. Android修改状态栏的背景颜色
  10. bzoj1076 奖励关(概率dp)(状态压缩)
  11. 差分放大电路及动态分析
  12. 基于cosmol软件的光纤热力学分析
  13. python中的dic.items(), dic.keys(), dic.values()
  14. chmod命令优美的用法
  15. Hystrix流程分析及断路器工作原理
  16. pug模板语法在vue中的使用--HTML的模板引擎
  17. MAC下拼音输入法不显示汉字提示
  18. 2313 Problem B 魂之挽歌
  19. U盘安装原版Win7或Win8教程
  20. 泪水,你看见了什么?

热门文章

  1. Python知识整理_1
  2. Hibernate无法自动建表的缘故
  3. 创建了一个表之后怎么再次在表中添加字段和字段显示位置_筛选数据透视表中的数据...
  4. 【Flink】Flink 1.13 Flink SQL 新特性 性能优化 时区 时间 纠正
  5. 90-40-010-源码-CUBE-引擎为MR写入Habse的构建
  6. 【HttpClient】httpclient之post 方法(参数为Map类型)
  7. 【Flink】flink消费kafka报错 KafkaConsumer.assign Ljava/util/List
  8. 【Flink】Flink 1.9 写入 es6 案例
  9. maven的pom.xml文件
  10. 《spring-boot学习》-05-spring boot中redis应用