Python Tkinter图形工具使用方法及实例解析


Posted in Python onJune 15, 2020

Tkinter 常用组件

按钮

  • Button 按钮组件
  • RadioButton 单选框组件
  • CheckButton 选择按钮组件
  • Listbox 列表框组件

文本输组件

  • Entry 单行文本框组件
  • Text 多行文本框组件

标签组件

  • Label 标签组件,可以显示图片和文字
  • Message 标签组件, 可以根据内容将文字换行

菜单

  • Menu 菜单组件
  • MenuButton 菜单按钮组件,可以实用Menu代替

滚动条

  • Scale 滑动组件
  • Scrollbar 滚动条组件

其他组件 Canvas 画布组件

  • Frame 框架组件,将多个组件编组
  • Toplevel 创建子窗口容器组件

组件的大致实用步骤创建总面板创建面板上各种组件

1.指定组件的父组件,即依附关系

2.利用相应的属性对组件进行设置

3.给组件安排布局最后启动总面板的消息循环组件布局

控制组件的摆放方式

三种布局:

  • pack: 按照方位布局
  • place: 按照坐标布局
  • grid: 网格布局

pack布局

  • 最简单,代码量最少,挨个摆放,默认从上到下,系统自动设置
  • 通用实用方式为:组件对象.pack(设置......)
  • side:停靠方位,可选值为LEFT,TOP,RIGHT,BOTTOM
  • fill:填充方式,x,y,BOTH,NONE
  • expande:YES/NO 扩充
  • anchor:N,E,S,W,CENTER
  • ipadx:x方向的内边距
  • ipady:y
  • padx:x的外方向边界
  • pady:y

grid布局

  • 通用使用方式:组件对象.grid(设置......)
  • 利用row,cblumn编号,都是从0开始
  • sticky:N,E,S,W表示上下左右,用来决定组件从哪个方向开始
  • 支持ipadx,padx等参数,跟pack函数一样
  • 支持rowspan,columnspan,代表跨行,跨列数列

place布局:

  • 明确方位的摆放
  • 相对位置布局,随意改变窗口大小会导致混乱
  • 使用place函数,分为绝对布局和相对布局,绝对布局使用X,Y参数
  • 相对布局使用relx,rely,relheight,relwidth

案例1:创建一个自己定义的弹窗、并且里面有文字内容

执行完成就会弹出一个白色定义好的小方框,里面的内容就是你定义的

import tkinter

base = tkinter.Tk()                # 创建总面板
# 负责标题
base.wm_title("Label Test")            # 创建面板的标题
lb = tkinter.Label(base, text="Pyhton Label")   # 创建一些内容,把创建的内容指定给我之前创建好的名为base的面板,Pyhton Label为面板的内容
# 给相应组件指定布局 
lb.pack()                     # 给相应组件指定布局
base.mainloop()                  # 启动总面板的消息循环(大致意思了解为启动这个面板)

Python Tkinter图形工具使用方法及实例解析

案例2:Button案例,创建一个弹窗,里面生成一个按钮,当按钮被按下去的时候,执行我定义的函数

import tkinter
def showlabel():
  global baseFrame   # 调用全局变量,baseFrame,也可以把baseFrame = tkinter.Tk() 放到函数上面
  lb = tkinter.Label(baseFrame, text="我是函数里面的内容")
  lb.pack()

if __name__ == '__main__':
  baseFrame = tkinter.Tk ()
  btn = tkinter.Button(baseFrame, text="点击我、就会执行函数", command=showlabel) # command为指定要执行的函数,不填默认不执行
  btn.pack()
  baseFrame.mainloop()

执行结果如下:

Python Tkinter图形工具使用方法及实例解析

pack布局

  • 最简单,代码量最少,挨个摆放,默认从上到下,系统自动设置
  • 通用实用方式为:组件对象.pack(设置......)
  • side:停靠方位,可选值为LEFT,TOP,RIGHT,BOTTOM
  • fill:填充方式,x,y,BOTH,NONE
  • expande:YES/NO 扩充
  • anchor:N,E,S,W,CENTER
  • ipadx:x方向的内边距
  • ipady:y
  • padx:x的外方向边界
  • pady:y

案例3:pack 布局案例

# pack 布局案例
import tkinter


def button1():
  # 函数内所有代码都是创建一个组件,然后布局
  global baseFreame
  btn1 = tkinter.Button(baseFreame, text='A')
  btn1.pack(side=tkinter.LEFT, expand=tkinter.YES, fill=tkinter.Y)

  btn2 = tkinter.Button(baseFreame, text='B')
  btn2.pack(side=tkinter.TOP, expand=tkinter.YES, fill=tkinter.BOTH)

  btn3 = tkinter.Button(baseFreame, text='C')
  btn3.pack(side=tkinter.RIGHT, expand=tkinter.YES, fill=tkinter.NONE, anchor=tkinter.NE)

  btn4 = tkinter.Button(baseFreame, text='D')
  btn4.pack(side=tkinter.LEFT, expand=tkinter.NO, fill=tkinter.Y)

  btn5 = tkinter.Button(baseFreame, text='E')
  btn5.pack(side=tkinter.TOP, expand=tkinter.NO, fill=tkinter.BOTH)

  btn6 = tkinter.Button(baseFreame, text='F')
  btn6.pack(side=tkinter.BOTTOM, expand=tkinter.YES)

  btn7 = tkinter.Button(baseFreame, text='G')
  btn7.pack(anchor=tkinter.SE)

if __name__ == '__main__':

  baseFreame = tkinter.Tk()
  button1 ()
  baseFreame.mainloop()

执行结果如下:

Python Tkinter图形工具使用方法及实例解析

grid布局

  • 通用使用方式:组件对象.grid(设置......)
  • 利用row,cblumn编号,都是从0开始
  • sticky:N,E,S,W表示上下左右,用来决定组件从哪个方向开始
  • 支持ipadx,padx等参数,跟pack函数一样
  • 支持rowspan,columnspan,代表跨行,跨列数列

案例3:grid布局案例

import tkinter

def button1():
  # 函数内所有代码都是创建一个组件,然后布局
  global baseFreame
  btn1 = tkinter.Label(baseFreame, text='账户:')
  btn1.grid(row=0, sticky=tkinter.W)
  en = tkinter.Entry(baseFreame)
  en.grid(row=0, column=1, sticky=tkinter.E)

  btn2 = tkinter.Label(baseFreame, text='密码:')
  btn2.grid(row=1, sticky=tkinter.W)
  en2 = tkinter.Entry(baseFreame)
  en2.grid(row=1, column=1, sticky=tkinter.E)

  btn2 = tkinter.Button(baseFreame, text='登陆')
  btn2.grid(row=2, column=1, sticky=tkinter.W)

if __name__ == '__main__':
  baseFreame = tkinter.Tk()
  button1()
  baseFreame.mainloop()

执行结果如下:

Python Tkinter图形工具使用方法及实例解析

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python操作数据库之sqlite3打开数据库、删除、修改示例
Mar 13 Python
Python使用Scrapy爬取妹子图
May 28 Python
python数组复制拷贝的实现方法
Jun 09 Python
Python操作使用MySQL数据库的实例代码
May 25 Python
python入门前的第一课 python怎样入门
Mar 06 Python
详解pandas如何去掉、过滤数据集中的某些值或者某些行?
May 15 Python
python opencv摄像头的简单应用
Jun 06 Python
python、PyTorch图像读取与numpy转换实例
Jan 13 Python
Python2.x与3​​.x版本有哪些区别
Jul 09 Python
Pycharm配置lua编译环境过程图解
Nov 28 Python
Python 中 sorted 如何自定义比较逻辑
Feb 02 Python
Python使用openpyxl模块处理Excel文件
Jun 05 Python
使用Keras画神经网络准确性图教程
Jun 15 #Python
在tensorflow下利用plt画论文中loss,acc等曲线图实例
Jun 15 #Python
python中元组的用法整理
Jun 15 #Python
详解Python设计模式之策略模式
Jun 15 #Python
python能做哪方面的工作
Jun 15 #Python
python实现二分类和多分类的ROC曲线教程
Jun 15 #Python
python属于解释型语言么
Jun 15 #Python
You might like
Win9x/ME下Apache+PHP安装配置
2006/10/09 PHP
php获取某个目录大小的代码
2008/09/10 PHP
php判断类是否存在函数class_exists用法分析
2014/11/14 PHP
PHP+MySQL插入操作实例
2015/01/21 PHP
Yii框架引用插件和ckeditor中body与P标签去除的方法
2017/01/19 PHP
javascript 原型继承介绍
2011/08/30 Javascript
img onload事件绑定各浏览器均可执行
2012/12/19 Javascript
JS.getTextContent(element,preformatted)使用介绍
2013/09/21 Javascript
js+HTML5实现canvas多种颜色渐变效果的方法
2015/06/05 Javascript
jQuery带时间的日期控件代码分享
2015/08/26 Javascript
微信小程序实现手势图案锁屏功能
2018/01/30 Javascript
全站最详细的Vuex教程
2018/04/13 Javascript
vue 国际化 vue-i18n 双语言 语言包
2018/06/07 Javascript
对类Vue的MVVM前端库的实现代码
2018/09/07 Javascript
老生常谈JavaScript获取CSS样式的方法(兼容各浏览器)
2018/09/19 Javascript
详解Webstorm 下的Angular2.0开发之路(图文)
2018/12/06 Javascript
vue项目中axios请求网络接口封装的示例代码
2018/12/18 Javascript
vue项目打包后上传至GitHub并实现github-pages的预览
2019/05/06 Javascript
基于Vant UI框架实现时间段选择器
2020/12/24 Javascript
[42:04]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#3Secret VS OG第一局
2016/03/03 DOTA
Python模块结构与布局操作方法实例分析
2017/07/24 Python
Python中常用信号signal类型实例
2018/01/25 Python
Numpy中矩阵matrix读取一列的方法及数组和矩阵的相互转换实例
2018/07/02 Python
Python文件操作中进行字符串替换的方法(保存到新文件/当前文件)
2019/06/28 Python
两种CSS3伪类选择器详细介绍
2013/12/24 HTML / CSS
应聘教师自荐信
2013/10/12 职场文书
好家长事迹材料
2014/01/23 职场文书
小学生元旦广播稿
2014/02/21 职场文书
财产公证书
2014/04/10 职场文书
2016党校培训心得体会
2016/01/07 职场文书
2016优秀员工先进事迹材料
2016/02/25 职场文书
求职自我评价参考范文
2019/05/16 职场文书
SpringBoot整合RabbitMQ的5种模式实战
2021/08/02 Java/Android
利用Python实现Picgo图床工具
2021/11/23 Python
漫画《尖帽子的魔法工坊》宣布动画化
2022/04/06 日漫
SQL Server的存储过程与触发器以及系统函数和自定义函数
2022/04/10 SQL Server