【python】tkinter GUI编程经典用法,Label标签组件应用实战详解

news2024/12/25 13:37:27

在这里插入图片描述

✨✨ 欢迎大家来到景天科技苑✨✨

🎈🎈 养成好习惯,先赞后看哦~🎈🎈

🏆 作者简介:景天科技苑
🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。
🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi,flask等框架,linux,shell脚本等实操经验,网站搭建,数据库等分享。

所属的专栏:python图形化GUI编程tkinter精讲
景天的主页:景天科技苑

文章目录

  • 1.tkinter 主窗口
    • 测试 tkinter 主窗口位置和大小的设置
  • 2.python GUI 编程整体描述
  • 3.tkinter常用组件汇总列表
  • 4.GUI 应用程序类的经典写法
    • 标准的面向对象 GUI 程序类的写法
  • 5.Label 组件
    • Label(标签)的用法实战

1.tkinter 主窗口

主窗口位置和大小
通过 geometry(‘wxh±x±y’)进行设置。w 为宽度,h 为高度。+x 表示距屏幕左边的距离;
-x 表示距屏幕右边的距离;+y 表示距屏幕上边的距离;-y 表示距屏幕下边的距离。单位是像素
前两个参数表示的是创建窗口的大小,而且一定要用x(小写的x表示),否则会报错:TclError: bad geometry specifier “400*300+100+100”,初学者一定要注意

测试 tkinter 主窗口位置和大小的设置

from tkinter import *
root = Tk()
#title设置窗口的主题
root.title("测试主窗口的位置和大小")
#geometry(‘wxh±x±y’)进行设置窗口大小和位置
root.geometry("500x400+100+200") #宽度 500,高度 400;距屏幕左边 100,距屏幕上边 200 ,注意这里是小写的x,不能写*,否则会报错

root.mainloop()

运行显示
在这里插入图片描述

2.python GUI 编程整体描述

图形用户界面是由一个个组件组成,就像小孩“搭积木”一样最终组成了整个界面。有
的组件还能在里面再放置其他组件,我们称为“容器”。Tkinter 的 GUI 组件关系图如下:
在这里插入图片描述

根据上图所示,我们依次讲解这些类的基本作用。
·Misc 和 Wm:
Tkinter 的 GUI 组件有两个根父类,它们都直接继承了 object 类:
·Misc:它是所有组件的根父类。
·Wm:它主要提供了一些与窗口管理器通信的功能函数。

·Tk
Misc 和 Wm 派生出子类 Tk,它代表应用程序的主窗口。一般应用程序都需要直接或间接
使用 Tk。
·Pack、Place、Grid
Pack、Place、Grid 是布局管理器。布局管理器管理组件的:大小、位置。通过布局管
理器可以将容器中的组件实现合理的排布。
·BaseWidget
BaseWidget 是所有组件的父类
·Widget
Widget 是所有组件类的父类。Widget 一共有四个父类:BaseWidget、Pack、Grid、Place。
意味着,所有 GUI 组件同时具备这四个父类的属性和方法。
在这里插入图片描述

【注】想观察类的层次结构可以在类定义处的类名上单击右键,选择 Diagram–>show
Diagram。
查看继承关系
在这里插入图片描述
在这里插入图片描述

3.tkinter常用组件汇总列表

在这里插入图片描述
在这里插入图片描述

4.GUI 应用程序类的经典写法

本节程序也是 GUI 应用程序编写的一个主要结构,采用了面向对象的方式,更加合理的
组织代码。
通过类 Application 组织整个 GUI 程序,类 Application 继承了 Frame 及通过继承拥有
了父类的特性。
通过构造函数__init__()初始化窗口中的对象,通过 createWidgets()方法
创建窗口中的对象。
Frame 框架是一个 tkinter 组件,表示一个矩形的区域。Frame 一般作为容器使用,可
以放置其他组件,从而实现复杂的布局。

可以参照官方文档里面的面向对象写法
在这里插入图片描述

标准的面向对象 GUI 程序类的写法

"""测试一个经典的 GUI 程序的写法,使用面向对象的方式"""
from tkinter import *
from tkinter import messagebox

#自定义类,继承Frame
class Application(Frame):
    """一个经典的 GUI 程序的类的写法"""
    #构造方法,可以调用绑定方法
    def __init__(self, master=None):
        #调用父类构造方法
        super().__init__(master)  # super()代表的是父类的定义,而不是父类对象
        self.master = master
        self.pack()
        self.createWidget()

    #绑定到对象方法
    def createWidget(self):
        """创建组件"""
        self.btn01 = Button(self)
        self.btn01["text"] = "点击送花"
        self.btn01.pack()
        #绑定事件
        self.btn01["command"] = self.songhua
        # 创建一个退出按钮,command表示处理逻辑
        self.btnQuit = Button(self, text="退出", command=root.destroy)
        self.btnQuit.pack()


    def songhua(self):
        # 第一个参数是标题,第二个参数是文本内容
        messagebox.showinfo("送花", "送你 99 朵玫瑰花")


if __name__ == '__main__':
    root = Tk()
    root.geometry("500x200+200+300")
    root.title("一个经典的 GUI 程序类的测试")
    #需要传参,master就是传的对象
    app = Application(master=root)
    root.mainloop()

运行
在这里插入图片描述

点击送花
在这里插入图片描述

点击退出,就退出程序

5.Label 组件

Label(标签)主要用于显示文本信息,也可以显示图像,是不可编辑的。

Label(标签)有这样一些常见属性:

  1. width,height:
    用于指定区域大小,如果显示是文本,则以单个英文字符大小为单位(一个汉字宽度占
    2 个字符位置,高度和英文字符一样);如果显示是图像,则以像素为单位。默认值是
    根据具体显示的内容动态调整。

  2. font
    指定字体和字体大小,如:font = (font_name,size)

  3. image:
    显示在 Label 上的图像,目前 tkinter 支持 PGM,PPM,GIF,PNG 格式。
    在这里插入图片描述

  4. fg 和 bg
    fg(foreground):前景色、bg(background):背景色

  5. justify
    针对多行文字的对齐,可设置 justify 属性,可选值"left", “center” or “right”
    在这里插入图片描述

6.relief
指定标签周围装饰边框的外观,默认值是’flat’,
可选项有"raised", “sunken”, “flat”, “ridge”, “solid”, “groove”
在这里插入图片描述

各个参数显示如下
在这里插入图片描述

7.text
指定显示在控件内的文本
8.state
可以设为’normal’或’disabled’,以便控制‘禁用’状态标志位

Label(标签)的用法实战

"""测试 Label 组件的基本用法,使用面向对象的方式"""
from tkinter import *
class Application(Frame):
    def __init__(self, master=None):
        super().__init__(master) # super()代表的是父类的定义,而不是父类对象
        self.master = master
        self.pack()
        self.createWidget()
    def createWidget(self):
        """创建组件"""
        self.label01 = Label(self,text="百战程序员", width=10,height=2,bg="black", fg="white")
        #也可以这样覆盖原数据
        # self.label01["text"]="ccc"
        #也可以用config设置属性
        self.label01.config(fg="red",bg="green")
        self.label01.pack()
        self.label02 = Label(self,text="景天", width=10,height=2,bg="blue", fg="white",font=("楷体", 30))
        self.label02.pack()
        # 显示图像
        global photo # 把 photo 声明成全局变量。如果是局部变量,本方法执行完毕后,图像对象销毁,窗口显示不出图像。
        photo = PhotoImage(file="imgs/数据分析.png")
        self.label03 = Label(self, width=500,height=100,image=photo)
        self.label03.pack()
        #borderwidth可简写为'bd',设置标签的边框宽度(单位:像素)
        self.label04 = Label(self, text="景天科技苑\n 百战程序员\n 景天好帅,就是做饭不行",borderwidth = 5, relief = "groove", justify = "right")
        self.label04.pack()


if __name__ == '__main__':
    root = Tk()
    root.geometry("500x360+200+300")
    root.title("景天科技苑")
    app = Application(master=root)
    root.mainloop()

运行结果
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1800865.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Mac怎么读取内存卡 Mac如何格式化内存卡

在今天的数字化时代,内存卡已经成为了我们生活中不可或缺的一部分。对于Mac电脑用户而言,正确地读取和管理内存卡中的数据至关重要。下面我们来看看Mac怎么读取内存卡,Mac如何格式化内存卡的相关内容。 一、Mac怎么读取内存卡 苹果电脑在读…

用例与用例之间的三种关系:泛化、包含、扩展

UML用例图(Use Case Diagrame),是UML图的一种,主要用来描述角色及角色与用例之间的连接关系。 1.泛化 当多个用例共有一种类似的结构和行为时。能够将他们的共性抽象成为父用例,其它的用例作为泛化关系的子用例。箭头指向父用例…

尝试使用blazor(二)Blazor WebAssembly(WASM)与Server之间有什么区别?

要使用Blazor,你得先选择一种模式,因为它有两种模式。Blazor网络框架允许将Razor组件以不同的方式托管。它们可以在ASP.NET Core(Blazor Server)中在服务器端运行,也可以在基于WebAssembly的.NET运行时在浏览器中在客户…

BL104网关钡铼技术多协议设备互操作简单一键接入

在工业环境中,设备之间的通信和互操作性是实现智能化生产的关键。为了满足这一需求,钡铼技术推出了PLC物联网关BL104,一款专为工业环境设计的多协议设备,简化了设备互操作的复杂性,实现了一键接入的便捷性。 PLC物联网…

详细分析Mysql中的JSON_OBJECT() 基本知识(附Demo)

目录 前言1. 基本知识2. Demo 前言 对于基本的命令行以及优化推荐阅读: 数据库中增删改常用语法语句(全)Mysql优化高级篇(全)命令行登录Mysql的详细讲解 1. 基本知识 JSON_OBJECT() 是 MySQL 中用于生成 JSON 对象…

fastadmin/thinkPHP5.0的框架使用注意事项

0.主要链接 一张图解析表格 数据表规划一定要做好,省的做的时候很乱,一会要改一下,就特别麻烦 在线命令生成crud的时候一定不要填写自定义控制器名,要让他自己生成,否则后面你要修改东西还需要再找.默认的永远能知道在哪里 在线命令生成的时候,可以试着删除一下(不会成功),但…

Java——IO流(一)-(1/8):File、IO流概述、File文件对象的创建(介绍、实例演示)

目录 File IO流概述 File文件对象的创建 介绍 实例演示 File 存储数据的方案 变量 double money 9999.5 数组 int[] age new int[100];对象 Student s new Student()集合 List<Student> students new ArrayList<>()…

【数据分析基础】实验二 Python程序流程控制、函数设计与使用

实验目的 熟悉选择结构嵌套时代码的缩进与对齐。理解带 else 子句的循环结构执行流程和条件表达式 value1 if condition else value2 的用法。熟悉使用循环和异常处理机构对用户输入进行约束的用法。掌握Python程序中进行选择、循环流程控制的语句、语法&#xff0c;熟练运用选…

中电金信:产教联合共育人才 AFAC2024金融智能创新大赛启动

当前&#xff0c;人工智能技术正在蓬勃发展&#xff0c;引领着各行各业迈向智能化的新纪元&#xff0c;特别是在金融科技领域&#xff0c;伴随人工智能技术的不断迭代与突破&#xff0c;金融服务的边界也在不断拓展&#xff0c;传统的金融业态正经历着深刻的变革与重塑。 与此同…

crossover软件安装程序怎么安装 Crossover for Mac切换Windows系统 crossover软件怎么样

CrossOver Mac版是专为苹果电脑用户打造的一款实用工具&#xff0c;这款工具主要方便用户在Mac上运行windows系列的应用程序&#xff0c;用户不需要安装虚拟机就可以实现各种应用程序的直接应用&#xff0c;并且可以实现无缝集成&#xff0c;实现跨平台的复制粘贴和文件互通等&…

【漏洞复现】海康威视综合安防管理平台 多处 FastJson反序列化RCE漏洞

0x01 产品简介 海康威视综合安防管理平台是一套“集成化”、“智能化”的平台,通过接入视频监控、一卡通、停车场、报警检测等系统的设备。海康威视集成化综合管理软件平台,可以对接入的视频监控点集中管理,实现统一部署、统一配置、统一管理和统一调度。 0x02 漏洞概述 由于…

系统思考—啤酒游戏沙盘

10个智商120的‮组人‬成‮团的‬队&#xff0c;大‮的家‬集体智‮是商‬多少&#xff1f; 在‮期长‬辅‮各导‬种‮业企‬的‮程过‬中&#xff0c;我‮经们‬常‮察观‬到&#xff0c;虽‮每然‬个‮门部‬都‮力努‬解决‮己自‬的问题&#xff0c;但‮司公‬整体的‮收应…

长文预警:九头蛇的进化——Tesla AutoPilot 纯视觉方案解析

九头蛇的进化&#xff1a;Tesla AutoPilot 纯视觉方案解析 前言 本文整理自原文链接&#xff0c;写的非常好&#xff0c;给了博主很多启发&#xff0c;投原创是因为平台机制&#xff0c;希望能被更多人看到。 嘿嘿&#xff0c;漫威粉不要打我←_←不是Hail Hydra&#xff0c…

彩虹易支付最新版源码

源码简介 彩虹易支付最新版源码&#xff0c;更新时间为5.1号 2024/05/01&#xff1a; 1.更换全新的手机版支付页面风格 2.聚合收款码支持填写备注 3.后台支付统计新增利润、代付统计 4.删除结算记录支持直接退回商户金额 安装环境 1.PHP版本>7.4 2.Mysql数据库 安装教…

83页 | 2024数据安全典型场景案例集(免费下载)

以上是资料简介和目录&#xff0c;如需下载&#xff0c;请前往星球获取&#xff1a;

Pico4 MR Unity零基础开发之获取手柄按键

一、导入示例资源 1、打开Package Manager面板&#xff0c;导入示例资源。 2、打开示例场景&#xff0c;方面后面测试。 二、打开 XRI Default Input Actions 三、设置XRI Default Input Actions 面板参数 1、点击号新增一项&#xff0c;重命名为Pico 2、新增并重命名Action …

JimuReport 积木报表 v1.7.52 版本发布,免费的低代码报表

项目介绍 一款免费的数据可视化报表工具&#xff0c;含报表和大屏设计&#xff0c;像搭建积木一样在线设计报表&#xff01;功能涵盖&#xff0c;数据报表、打印设计、图表报表、大屏设计等&#xff01; Web 版报表设计器&#xff0c;类似于excel操作风格&#xff0c;通过拖拽完…

毫米波雷达阵列天线设计综合1(MATLAB仿真)

1 天线设计目标 毫米波雷达探测目标的距离、速度和角度&#xff0c;其中距离和角度和天线设计相关性较强。天线增益越高&#xff0c;则根据雷达方程可知探测距离越远&#xff1b;天线波束越窄&#xff0c;则角度分辨率越高&#xff1b;天线副瓣/旁瓣越低&#xff0c;则干扰越少…

[office] excel怎么设置图表格式- excel中chart tools的使用方法 #笔记#经验分享#其他

excel怎么设置图表格式? excel中chart tools的使用方法 excel怎么设置图表格式&#xff1f;excel中的数据可以制作成图表&#xff0c;在出啊如图表以后可以再图表总使用命令对其格式进行设置&#xff0c;下面我们就来看看excel中chart tools的使用方法&#xff0c;需要的朋友可…

libgdx ashley框架的讲解

官网&#xff1a;https://github.com/libgdx/ashley 我的libgdx学习代码&#xff1a;nanshaws/LibgdxTutorial: libgdx 教程项目 本项目旨在提供完整的libgdx桌面教程&#xff0c;帮助开发者快速掌握libgdx游戏开发框架的使用。成功的将gdx-ai和ashley的tests从官网剥离出来,并…