【Python_GUI】tkinter常用组件——文本类组件

文本时窗口中必不可少的一部分,tkinter模块中,有3种常用的文本类组件,通过这3种组件,可以在窗口中显示以及输入单行文本、多行文本、图片等。

Label标签组件

Label组件的基本使用

Label组件是窗口中比较常用的组件,通常用于添加文字或图片,还可以定义Label组件中文字和图片的排列方式。

Label具体的语法如下:

Label(win,text='文本',justify='center')

其中,win是Label组件的父容器,text指定标签的文本;justify指定标签中拥有多行文本时最后一行文本的对齐方式

示例1:

from tkinter import *win=Tk()
#标题
win.title('文本组件')
Label(win,text='文本',justify='center')
# textd定义Label标签里的文本内容,bg表示Label的背景颜色
txt1=Label(win,text="象",bg="#FFEBCD",width=5,padx=4,pady=4,font="10")
txt2=Label(win,text="狮",bg="#c1ffc1",width=5,padx=4,pady=4,font="10")
txt3=Label(win,text="虎",bg="#FFEBCD",width=5,padx=4,pady=4,font="10")
txt4=Label(win,text="豹",bg="#c1ffc1",width=5,padx=4,pady=4,font="10")
txt5=Label(win,text="狼",bg="#FFEBCD",width=5,padx=4,pady=4,font="10")
txt6=Label(win,text="狗",bg="#c1ffc1",width=5,padx=4,pady=4,font="10")
txt7=Label(win,text="猫",bg="#FFEBCD",width=5,padx=4,pady=4,font="10")
txt8=Label(win,text="鼠",bg="#c1ffc1",width=5,padx=4,pady=4,font="10")
# foreground设置label组件的文字颜色
txtr1=Label(win,text="→",padx=2,pady=2,foreground="#B22222").grid(row=1,column=2)
txtr2=Label(win,text="→",padx=2,pady=2,foreground="#B22222").grid(row=1,column=4)
txtb1=Label(win,text="↓",padx=2,pady=2,foreground="#B22222").grid(row=2,column=5)
txtb2=Label(win,text="↓",padx=2,pady=2,foreground="#B22222").grid(row=4,column=5)
txtl1=Label(win,text="←",padx=2,pady=2,foreground="#B22222").grid(row=5,column=4)
txtl2=Label(win,text="←",padx=2,pady=2,foreground="#B22222").grid(row=5,column=2)
txtt1=Label(win,text="↑",padx=2,pady=2,foreground="#B22222").grid(row=4,column=1)
txtt2=Label(win,text="↑",padx=2,pady=2,foreground="#B22222").grid(row=2,column=1)
# 设置斗兽棋游戏的棋子的位置
txt1.grid(row=1,column=1)
txt2.grid(row=1,column=3)
txt3.grid(row=1,column=5)
txt4.grid(row=3,column=5)
txt5.grid(row=5,column=5)
txt6.grid(row=5,column=3)
txt7.grid(row=5,column=1)
txt8.grid(row=3,column=1)win.mainloop()

在Label组件中添加图片

在tkinter模块中,图片可以在多处使用,例如Label组件、button按钮以及Text文字区域等,但是添加图片时,需要先创建图像对象PhotoImage(),然后再在其他组件中引入该对象。例如在Label组件中添加一张图像:

from tkinter import *win=Tk()
#标题
win.title('文本组件')
img=PhotoImage(file='cat.png')
Label(win,image=img).pack()
win.mainloop()

PgotoImage()方法不支持jpg格式的图片,如果需要在窗口中添加.jpg格式的图片,需要现在和引入第三方模块PIL

而如果Label组件中,既有文字,又有图片,则可以通过Label组件中的compound设置图片与文字的显示位置,其参数和含义如下:

参数值含义
top图片位于文字的上方
bottom图片位于文字的下方
left图片位于文字的左侧
right图片位于文字的右侧
center文字位于图片上(图文重叠,且文字在图片的上层)

Entry单行文本框组件

Entry组件的基本使用

Entry组件用于添加单行文本框,其特点是可以添加少量文字。例如登录窗口的用户名输入框和密码输入框。添加Entry组件的语法如下:

from tkinter import *win=Tk()
#标题
win.title('文本组件')
user=PhotoImage(file="user.png")     #用户名图标
psw=PhotoImage(file="psw.png")       #密码图标
Label(win,image=user,bg="#fff").grid(row=0)    #显示用户名图标
Entry(win).grid(row=0,column=1,padx=10,pady=10)  #用户名文本框
Label(win,image=psw,bg="#fff").grid(row=1)       #显示密码图标
Entry(win,show="*").grid(row=1,column=1,padx=10,pady=10)    #密码文本框,输入的内容显示为“*”
Label(win,text="确定",relief="groove").grid(row=2,columnspan=2,pady=10)
win.mainloop()

很多app登录时需要设置密码,输入密码时,用户看到的并非是自己输入的密码,而是“****”样式的隐藏符号,在Entry组件中,可以通过show参数将用户输入的内容隐藏起来。,并且显示为用户指定的字符:

Entry(win,show='*')

Entry组件中各方法的使用

Entry组件中提供了三个方法,分别是get()、insert()、delete(),它们的具体功能:

get():获取文本框中的内容

insert()在文本框的指定位置添加内容:

entry.insert(4,'***')

insert()中的参数分别表示要添加文本的位置和内容

delete():在删除文本框中指定的内容:

entry.delete(1,2)

delete()中的参数分别表示删除文本区间的起始位置和结束位置

Text多行文本框组件

Entry组件虽然可以添加文字,但是文字只能在一行中显示,当文字较多时,无法换行显示,而Text多行文本框弥补了这一缺点。

Text组件的基本使用

Text组件内可以输入多行文本,当文本内容较多时,它可以自动换行。事实上,Text组件中不仅可以放置纯文本,还可以添加图片、按钮等,具体语法如下:

Text(win)

其中,win为父容器。

在Text组件中可以通过insert()方法来添加初始文本:

text=Text(win)
text.insert(INSERT,'aaaaa')

在Text组件中添加图片时,需要创建PhotoImage()对象,然后通过image_create()引入图像:

photo=PhotoImage(file='psw.png')
text.image_create(END,image=photo)

Text组件的索引

Text组件提供了index()方法,该方法可以用于指向Text组件中文本的位置,它与Python的序列索引一样,Text组件索引也是对应实际字符的位置。Text组件中,文本的索引值通常为字符串类型,并且指定Text索引的方法有多重,常见的有:

line.column:这种方式将索引位置的行号和列号以字符串的形式表现出来,并且中间以“.”分隔,例如“2.3”表示第2行第4列;

insert:插入光标的位置

end:最后一个字符的位置,如果字符串为end,表示所有文本的最后一个字符,如果字符串为line.end,表示当前行的最后一个字符位置。

+count chars:指定位置向后移动count个字符。

-count chars:指定位置向前移动count个字符。

Text组件的常用方法

Text组件提供了一些方法可以获取或编辑Text组件中的内容,常用的方法如下:

方法含义
delete()删除Text组件中的内容
get()获取文本内容
mark_set()添加标记
search()搜索文本
edit_undo()撤销操作
edit_separator()添加分割线,如果再进行撤销操作时,不会撤销所有操作,而只是撤销上一次操作

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

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

相关文章

【LeetCode】有效的数独

目录 一、题目二、解法 一、题目 请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。&…

智能充电(新能源电动车,电单车)云管理系统的定制解决方案

一 系统简介 智能充电(新能源电动车,电单车)云管理系统 是一套能够实现对充电站/桩的实时通讯、状态监控、故障检测、运营分析、数据统计、策略设置的智能化多任务管理系统。 二 平台概览 智能充电云管理系统 https://chongdianzhuang.itg…

嵌入式Linux系统编程 — 7.4 fork、vfork函数创建子进程

目录 1 父进程与子进程概念 2 fork创建子进程 3 系统调用 vfork()函数 4 vfork与 fork函数如何选择 1 父进程与子进程概念 进程与子进程是操作系统中的一个基本概念,用于描述进程之间的层级关系。下面是对这一概念的简要说明: 父进程:在…

从项目中初识Autosar状态机转换

目录 0 前言 1 状态转换 1.1 BSM TO RMS 1.2 RMS TO RSS 1.3 RMS TO NOS 1.4 RSS TO PBSM 1.5 PBSM TO BSM 1.6 RSS TO NOS 1.7 RSS TO RMS 2 结尾 0 前言 之前在这篇《从项目中初识Autosar网络管理》已经和大家讲了Autosar网络管理的几个状态机以及定时器的大致概念&a…

【网安播报】CocoaPods 曝关键漏洞,应用程序面临供应链攻击风险

1、CocoaPods 曝关键漏洞,数百万 macOS 和 iOS 应用程序面临供应链攻击风险 开源依赖管理器 CocoaPods 中的安全漏洞暴露了数千个软件包,利用这些漏洞的攻击者可以将恶意代码注入合法应用,通过受信任的渠道分发恶意软件,并破坏用户…

Qt QWizard新建向导实例

使用QWizard做新建向导,最简单的实例 class MyWizard : public QWizard { public: MyWizard(QWidget* parent nullptr); QWizardPage* createFirstPage(); QWizardPage* createSecondPage(); QWizardPage* createThirdPage(); }; MyWizard::MyWizard(QWidget* par…

最近点对问题(算法与数据结构设计)

课题内容和要求 最近点对问题,在二维平面上输入n个点列P。其中任一点pi(xi,yi),编写程序求出最近的两个点。使用穷举法实现,算法复杂度O(n2);优化算法,以O(nlog2n)实现这一问题 数…

静脉分割YOLOV8-SEG

静脉分割,YOLOV8*SEG资源-CSDN文库 首先使用YOLOV8-SEG训练,得到PT模型,然后转换成ONNX,OPENCV的DNN调用,从而摆脱PYTORCH依赖,支持C,PYTHON,ANDROID调用

Java信号量semaphore的原理与使用方法

Semaphore的基本概念 在Java中,Semaphore是位于java.util.concurrent包下的一个类。它的核心就是维护了一个许可集。简单来说,就是有一定数量的许可,线程需要先获取到许可,才能执行,执行完毕后再释放许可。 那么&…

尚品汇-(十五)

&#xff08;1&#xff09;快速入门 SpringBoot形式创建 Maven形式创建&#xff1a; 加入依赖&#xff1a; 创建启动类&#xff1a; 设置头文件 就想Jsp的<%Page %>一样 &#xff0c;Thymeleaf的也要引入标签规范。不加这个虽然不影响程序运行&#xff0c;但是你的idea…

顶会FAST24最佳论文|阿里云块存储架构演进的得与失-4.EBS不同架构性能提升思路

3.1 平均延迟与长尾延迟 虚拟磁盘&#xff08;VD&#xff09;的延迟是由其底层架构决定的&#xff0c;具体而言&#xff0c;取决于请求所经历的路径。以EBS2为例&#xff0c;VD的延迟受制于两跳网络&#xff08;从BlockClient到BlockServer&#xff0c;再至ChunkServer&#x…

Xilinx FPGA:vivado关于IIC的一些零碎知识点

一、简介 IlC(inter-Integrated circuit)总线是一种由NXP(原PHILIPS)公司开发的两线式串行总线&#xff0c;用于连接微控制器及其外围设备。多用于主控制器和从器件间的主从通信&#xff0c;在小数据量场合使用&#xff0c;传输距离短&#xff0c;任意时刻只能有一个主机等特性…

13 协程设计原理与汇编实现

协程的问题 为什么要有协程?协程的原语操作?协程的切换?协程的struct如何定义?协程的scheduler(调度)如何定义?调度策略如何实现?协程如何与posix,api兼容?协程多核模式?协程的性能如何测试?为什么要有协程 同步的编程方式,异步的性能。同步编程时,我们需要等待io就…

信息技术课堂纪律管理:从混乱到秩序的智慧转型

引言&#xff1a; 在信息爆炸的时代&#xff0c;信息技术课程如同一把开启未来世界大门的钥匙&#xff0c;为学生们搭建起探索科技奥秘的桥梁。然而&#xff0c;面对着屏幕背后的无限诱惑&#xff0c;维持课堂纪律&#xff0c;确保学生们专注于学习&#xff0c;成为了每位信息…

C/C++内存分布

1.内存分布简略图 2.全局变量和静态变量的区别 (1)局部静态变量&#xff1a;存储在数据段中&#xff0c;局部静态变量的作用域在当前函数中&#xff0c;出了函数就不能使用该变量&#xff0c;但局部静态变量的生命周期是在整个程序间&#xff0c;局部静态变量要运行到这一行才…

【Java14】构造器

Java中的构造器在创建对象&#xff08;实例&#xff09;的时候执行初始化。Java类必须包含一个或一个以上的构造器。 Java中的构造器类似C中的构造函数。 Java中对象&#xff08;object&#xff09;的默认初始化规则是&#xff1a; 数值型变量初始化为0&#xff1b;布尔型变量…

【CSAPP】-cachelab实验

目录 实验目的与要求 实验设备与软件环境 实验过程与结果&#xff08;可贴图&#xff09; 操作异常问题与解决方案 实验总结 实验目的与要求 1、掌握应用程序性能的优化方法&#xff1b; 2、理解存储器层次结构在程序运行过程中所起的重要作用&#xff1b; 3、让学生更好…

高考志愿填报的六个不要

在高考志愿填报这个关键时刻&#xff0c;确实需要谨慎行事&#xff0c;避免一些常见的错误。以下是高考志愿填报的六个“不要”&#xff0c;希望能为你提供一些有用的建议&#xff1a; 1、不要盲目跟风 每个人的兴趣、能力和未来规划都不同&#xff0c;不要仅仅因为某个专业或…

Gradle基础:从入门到掌握

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 在现代软件开发中&#xff0c;自动化构建工具是提高效率和管理依赖的重要手段。而Gradle作为一种灵活且强大的构…

python基础篇(9):模块

1 模块简介 Python 模块(Module)&#xff0c;是一个 Python 文件&#xff0c;以 .py 结尾. 模块能定义函数&#xff0c;类和变量&#xff0c;模块里也能包含可执行的代码. 模块的作用: python中有很多各种不同的模块, 每一个模块都可以帮助我们快速的实现一些功能, 比如实现…