热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

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

这篇文章主要介绍了PythonTkinter图形工具使用方法及实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

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()                  # 启动总面板的消息循环(大致意思了解为启动这个面板)

案例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()

执行结果如下:

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()

执行结果如下:

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()

执行结果如下:

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


推荐阅读
  • 本文探讨了如何通过一系列技术手段提升Spring Boot项目的并发处理能力,解决生产环境中因慢请求导致的系统性能下降问题。 ... [详细]
  • 深入解析Spring Cloud Ribbon负载均衡机制
    本文详细介绍了Spring Cloud中的Ribbon组件如何实现服务调用的负载均衡。通过分析其工作原理、源码结构及配置方式,帮助读者理解Ribbon在分布式系统中的重要作用。 ... [详细]
  • 使用C# .NET构建UDP点对点聊天应用
    本文详细介绍如何利用C# .NET框架开发一个基于UDP协议的点对点聊天程序,包括客户端与服务器之间的连接建立、数据传输等核心功能。 ... [详细]
  • MLB正式开放可穿戴技术的应用
    据知情人士透露,美国职业棒球大联盟(MLB)计划在当前赛季内引入两款先进的可穿戴设备,旨在提升球员健康管理和性能分析能力。这两款设备分别是能够测量肘关节压力的Motus袖套和能监控心跳与呼吸速率的Zephyr Bioharness。 ... [详细]
  • 智慧城市建设现状及未来趋势
    随着新基建政策的推进及‘十四五’规划的实施,我国正步入以5G、人工智能等先进技术引领的智慧经济新时代。规划强调加速数字化转型,促进数字政府建设,新基建政策亦倡导城市基础设施的全面数字化。本文探讨了智慧城市的发展背景、全球及国内进展、市场规模、架构设计,以及百度、阿里、腾讯、华为等领军企业在该领域的布局策略。 ... [详细]
  • 力扣93:复原IP地址问题解析(Golang实现)
    本文探讨了力扣平台上的第93号问题——复原IP地址。该问题要求从给定的纯数字字符串中,通过添加分隔符‘.’来构建所有可能的有效IP地址。有效IP地址由四个介于0至255之间的整数组成,不允许出现前导零。 ... [详细]
  • C语言入门精选教程与书籍推荐
    本文精选了几本适合不同水平学习者的C语言书籍,从基础入门到进阶提高,帮助读者全面掌握C语言的核心知识和技术。 ... [详细]
  • 本文介绍了两种在Android设备上获取MAC地址的有效方法,包括通过Wi-Fi连接和使用移动数据流量的情况。第一种方法依赖于Wi-Fi连接来获取MAC地址,而第二种方法则无需Wi-Fi,直接通过网络接口获取。 ... [详细]
  • 近期遇到 M1 Mac Mini 在休眠状态下频繁自动重启的问题,通过日志分析尝试找出可能的原因。 ... [详细]
  • 如何在Linux环境下通过Java代码获取主机IP地址
    本文详细介绍了在Linux系统中利用Java编程语言来获取当前主机的IP地址的方法。包括了如何处理网络接口以及选择合适的IP地址等关键步骤。 ... [详细]
  • 全新推出的第二代旅游网站管理系统(简称二代CMS),在现有旅游网站管理系统的基础上进行了全面的技术升级和功能优化,旨在提供更加高效、便捷的旅游管理服务。 ... [详细]
  • 文章目录17、less17-UpdateQuery-Errorbased-String18、less18-HeaderInjection-ErrorBased-string19、l ... [详细]
  • 本文详细介绍了Java库com.linecorp.armeria.client.Endpoint中的withIpAddr()方法的使用方式,并提供了多个实际代码示例,帮助开发者更好地理解和应用该方法。 ... [详细]
  • Linux双网卡绑定技术详解与实践
    本文详细介绍了如何在Linux系统中实现双网卡绑定,即将两块物理网卡合并为一个逻辑网卡,以提高网络性能和可靠性。文中不仅涵盖了基本的概念,还提供了具体的配置步骤和测试方法。 ... [详细]
  • Delphi 10.4.2 版本现已进入内测阶段,此次更新不仅增强了现有功能,还引入了多项新技术以提升用户体验。新版本将支持最新的MSIX应用打包格式,改善Windows 10应用商店的部署体验;同时,新增的VCL控件将带来更加现代的用户界面设计。 ... [详细]
author-avatar
彼岸花芬芳
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有