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入门教程之if语句的用法
May 14 Python
Python实现快速排序算法及去重的快速排序的简单示例
Jun 26 Python
Python 搭建Web站点之Web服务器与Web框架
Nov 06 Python
关于Django外键赋值问题详解
Aug 13 Python
tensorflow1.0学习之模型的保存与恢复(Saver)
Apr 23 Python
Python实现多线程的两种方式分析
Aug 29 Python
TensorFlow实现模型评估
Sep 07 Python
Python3批量生成带logo的二维码方法
Jun 24 Python
python生成随机红包的实例写法
Sep 02 Python
Python Selenium参数配置方法解析
Jan 19 Python
Python @property原理解析和用法实例
Feb 11 Python
Python中使用ipython的详细教程
Jun 22 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
MySQL连接数超过限制的解决方法
2011/07/17 PHP
CI框架中集成CKEditor编辑器的教程
2014/06/09 PHP
初识php MVC
2014/09/10 PHP
Laravel find in set排序实例
2019/10/09 PHP
Jquery 动态添加按钮实现代码
2010/05/06 Javascript
Jquery实现图片左右自动滚动示例
2013/09/25 Javascript
JS中操作JSON总结
2020/12/06 Javascript
用js设置下拉框为只读的小技巧
2014/04/10 Javascript
jQuery插件简单实现方法
2015/07/18 Javascript
nodejs和php实现图片访问实时处理
2017/01/05 NodeJs
Angular实现跨域(搜索框的下拉列表)
2017/02/16 Javascript
JavaScrpt判断一个数是否是质数的实例代码
2017/06/11 Javascript
vue2.0 可折叠列表 v-for循环展示的实例
2018/09/07 Javascript
vue+element 模态框表格形式的可编辑表单实现
2019/06/07 Javascript
Vue Router的手写实现方法实现
2020/03/02 Javascript
python使用opencv按一定间隔截取视频帧
2018/03/06 Python
selenium 安装与chromedriver安装的方法步骤
2019/06/12 Python
python递归法解决棋盘分割问题
2019/07/17 Python
Python高级特性——详解多维数组切片(Slice)
2019/11/26 Python
python 生成任意形状的凸包图代码
2020/04/16 Python
pycharm开发一个简单界面和通用mvc模板(操作方法图解)
2020/05/27 Python
Windows下Sqlmap环境安装教程详解
2020/08/04 Python
Python 在局部变量域中执行代码
2020/08/07 Python
python 实现非极大值抑制算法(Non-maximum suppression, NMS)
2020/10/15 Python
python开发一个解析protobuf文件的简单编译器
2020/11/17 Python
amazeui模态框弹出后立马消失并刷新页面
2020/08/19 HTML / CSS
HTML5输入框下拉菜单功能的示例代码
2020/09/08 HTML / CSS
阿里健康大药房:阿里自营网上药店
2017/08/01 全球购物
某公司.Net方向面试题
2014/04/24 面试题
大学生自我鉴定
2013/12/16 职场文书
夫妻婚内购房协议书
2014/10/05 职场文书
王金山在党的群众路线教育实践活动总结大会上的讲话稿
2014/10/25 职场文书
工作经历证明书范文
2014/11/02 职场文书
河童之夏观后感
2015/06/11 职场文书
2016中考冲刺决心书
2015/09/22 职场文书
数据库之SQL技巧整理案例
2021/07/07 SQL Server