python tkinter 文本类组件

2024-09-07 23:36
文章标签 python 组件 文本 tkinter

本文主要是介绍python tkinter 文本类组件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Label组件

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

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

from tkinter import *
from PIL import Image,ImageTkroot = Tk()
root.title("compound")
root.state("zoomed")  #全屏
GText = "\n床前明月光,疑是地上霜\n举头望明月,低头思故乡"G_gif = ImageTk.PhotoImage(file='h.jpg')
"""
使用Label的compound参数让文字与标签共存,compound参数设置图像的位置。compound参数可以是下列值left:图像在左
right:图像在右
top:图像在顶部
bottom:在下
center:文字覆盖在图像上方
"""
label = Label(root, text=GText, image = G_gif, bg='lightyellow',compound="left", font=("simsun", 20))label.pack()root.mainloop()

Entry组件

Entry组件用于添加单行文本框,其特点是可以添加少量文字

from tkinter import *
from PIL import Image,ImageTkwin=Tk()
win.configure(bg='lightyellow')user=ImageTk.PhotoImage(file='h.jpg')
Label(win,text='用户账号',font=14,image=user).grid(pady=10,row=0,column=0)
Entry(win).grid(row=0,column=1)
password=ImageTk.PhotoImage(file='h.png')
Label(win,text='密码',font=14,image=password).grid(pady=10,row=1,column=0)
# Entry组件中,可以通过show参数将用户输入的内容隐藏起来,并且显示为用户指定的字符
entry=Entry(win,show='*')
entry.grid(row=1,column=1)
"""
Entry组件提供了三种方法,分别是get()、insert()和delete()方法,通过这三种方法可以实现获取、插入及删除文本框组件中内容的功能
"""# 使用insert()在文本框的指定位置添加内容
entry.insert(INSERT,'password123')
# 使用delete()删除文本框中指定内容
def back():length=len(entry.get())  #获取文本框的内容的长度entry.delete(0,END)def show():str=entry.get()  #获取文本框的内容print('密码',str)
Button(win,text='显示',command=show).grid(row=1,column=2)  #定义一个按钮
Button(win,text='清除',command=back).grid(row=1,column=3)win.mainloop()

 

from tkinter import *
from PIL import Image,ImageTkwin=Tk()
win.configure(bg='lightyellow')def add():re.delete(0,END)add1=int(op1.get())add2=int(op2.get())re.insert(INSERT,add1+add2)op1=Entry(win,width=5)
op1.grid(row=0,pady=20)
Label(win,text='+').grid(row=0,column=1)
op2=Entry(win,width=5)
op2.grid(row=0,column=2)
Label(win,text='=').grid(row=0,column=3)
re=Entry(win,width=5)
re.grid(row=0,column=4)
Button(win,text='计算',command=add).grid(row=1,column=5)win.mainloop()

 

 

Text组件

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

from tkinter import *
from PIL import Image,ImageTki=0
def show():global ii+=1label.config(text='你点了我\t'+str(i)+'下')win=Tk()
win.configure(bg='lightyellow')
text=Text(win,width=45,height=10,bg='lightyellow',relief='solid')  #创建多行文本框
photo=ImageTk.PhotoImage(file='h.jpg')  #创建一个图象对象
text.image_create(END,image=photo)  #text中插入图片
text.insert(INSERT,'在这里添加文本') #添加文本
text.pack()bt=Button(win,text='你点我试试',command=show,padx=10) #创建一个按钮
label=Label(win,padx=10,text='你点了我0下')
"""
Text组件提供了index()方法,用于指向Text组件中文本的位置,
它与Python的序列索引一样,也是对应实际字符之间的位置。
Text组件中,文本的索引值通常为字符串类型,并且指定Text索引的方式有多种,
下面列举常见的几种方式:
☑ line.column:这种方式将索引位置的行号和列号以字符串的形式表示出来,并且中间以“.”分隔,例如“2.3”表示第2行第4列。
☑ insert:插入光标的位置。
☑ end:最后一个字符的位置,如果字符串为“end”,表示所有文本的最后一个字符位置;
如果字符串为“line.end”,就表示第line行的最后一个字符位置。
☑+count chars:指定位置向后移动count个字符。例如“2.1+2 chars”表示第2行第4个字符的位置。
☑-count chars:指定位置向前移动count个字符。例如“2.3-2 chars”表示第2行第2个字符的位置。
"""
text.window_create('2.1',window=bt)  #将按钮放在text中
text.window_create('2.2',window=label)print(text.get(1.1,1.9))
win.mainloop()

 

from tkinter import *
win=Tk()def undo1(event):text.edit_undo()  #撤销之前的操作
def redo1(enent):text.edit_redo()
def callback(event):print('hh')text.edit_separator()  #单击一次键盘就加一个分割线text=Text(win,width=50,height=30,undo=True,autoseparators=False)
text.pack()text.insert(INSERT,'在下方添加文本,通过键盘  <ctrl+z>撤销操作 和<ctrl+y回复操作\n\n>')
text.bind('<Key>',callback)
text.bind('<Control-Z>',undo1)
text.bind('<Control-Y>',redo1)  #按下组合键执行操作win.mainloop()

Spinbox组件

Spinbox组件不仅可以添加文本,还可以在给定的值中选择一个

from tkinter import *win=Tk()
win.title('购买道具')Label(win,text='购买道具:').grid(row=0,column=0,pady=10)
#通过元组定义可以选择的值
Spinbox(win,values=('绿水晶','红宝石','生命水')).grid(row=0,column=1,pady=10)
Label(win,text='购买数量').grid(row=1,column=0,pady=10)
#通过from_to 定义可选的数值范围
Spinbox(win,from_=1,to=5).grid(row=1,column=1,pady=10)
Label(win,text='限购5件').grid(row=1,column=1,pady=10)
Label(win,text='支付方式').grid(row=2,column=1,pady=10)
Spinbox(win,values=('金币','钻石','点券')).grid(row=2,column=1,pady=10)win.mainloop()

 

from tkinter import *win=Tk()
win.title('留言本')def show():info.insert('insert','\t时间:{}月{}日{}\n'.format(spmon.get(),spdat.get(),spwek.get()))print(info.get('1.0',END))
mess=Label(win,text='请添加你的留言').grid(row=0,column=0,columnspan=5,pady=10)
spmon=Spinbox(win,from_=1,to=12,width=10) #选择月份
spmon.grid(row=1,column=0,pady=10)
mon=Label(win,text='月').grid(row=1,column=1,pady=10)
spdat=Spinbox(win,from_=1,to=30,width=10) #选择日期
spdat.grid(row=1,column=2,pady=10)
dat=Label(win,text='日').grid(row=1,column=3,pady=10)
spwek=Spinbox(win,values=('星期一','星期二','星期三','星期四','星期五','星期六','星期日'))
spwek.grid(row=1,column=5,columnspan=3,pady=10)info=Text(win,bg='lightyellow',width=50,height=10)
get1=Button(win,text='提交',command=show).grid(row=3,columnspan=10)
info.grid(row=2,columnspan=10)win.mainloop()

Scale组件

Scale组件可以规定数值范围,用户只需要拖动滑块就可以选择数值

from tkinter import *win=Tk()num=0
def up1():if scale1.get()<50:val=scale1.get()+1scale1.set(val)num=val*5txt.config(text='爱心暴击'+str(num))def down1():if scale1.get()>0:val=scale1.get()-1scale1.set(val)num=val*5txt.config(text='爱心暴击'+str(num))
def hit(widget):num=scale1.get()*5txt.config(text='爱心暴击'+str(num))
txt=Label(text='爱心暴击+0')
txt.pack(side=TOP)
btndown=Button(win,text='-',command=down1,width=2).pack(side='left')
# from_和to表示数值范围,resolution=1表示每次滑块移动增加或减小1
"""
win为指定的父容器;form_和to指定Scale组件中值的范围,其中from_为最小值,to为最大值;
resolution定义滑块每次更改的数值;
orient定义组件垂直显示或水平显示,若值为HORIZONTAL,表示水平显示,若值为VERTICAL,表示垂直显示
"""
scale1=Scale(win,from_=0,to=50,resolution=1,orient=HORIZONTAL,showvalue=0,command=hit)
scale1.pack(side='left')btnup=Button(win,text='+',command=up1,width=2).pack(side='left')win.mainloop()

 

这篇关于python tkinter 文本类组件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1146486

相关文章

Python结合PyWebView库打造跨平台桌面应用

《Python结合PyWebView库打造跨平台桌面应用》随着Web技术的发展,将HTML/CSS/JavaScript与Python结合构建桌面应用成为可能,本文将系统讲解如何使用PyWebView... 目录一、技术原理与优势分析1.1 架构原理1.2 核心优势二、开发环境搭建2.1 安装依赖2.2 验

Vue3组件中getCurrentInstance()获取App实例,但是返回null的解决方案

《Vue3组件中getCurrentInstance()获取App实例,但是返回null的解决方案》:本文主要介绍Vue3组件中getCurrentInstance()获取App实例,但是返回nu... 目录vue3组件中getCurrentInstajavascriptnce()获取App实例,但是返回n

一文详解如何在Python中从字符串中提取部分内容

《一文详解如何在Python中从字符串中提取部分内容》:本文主要介绍如何在Python中从字符串中提取部分内容的相关资料,包括使用正则表达式、Pyparsing库、AST(抽象语法树)、字符串操作... 目录前言解决方案方法一:使用正则表达式方法二:使用 Pyparsing方法三:使用 AST方法四:使用字

Python列表去重的4种核心方法与实战指南详解

《Python列表去重的4种核心方法与实战指南详解》在Python开发中,处理列表数据时经常需要去除重复元素,本文将详细介绍4种最实用的列表去重方法,有需要的小伙伴可以根据自己的需要进行选择... 目录方法1:集合(set)去重法(最快速)方法2:顺序遍历法(保持顺序)方法3:副本删除法(原地修改)方法4:

Python运行中频繁出现Restart提示的解决办法

《Python运行中频繁出现Restart提示的解决办法》在编程的世界里,遇到各种奇怪的问题是家常便饭,但是,当你的Python程序在运行过程中频繁出现“Restart”提示时,这可能不仅仅是令人头疼... 目录问题描述代码示例无限循环递归调用内存泄漏解决方案1. 检查代码逻辑无限循环递归调用内存泄漏2.

Python中判断对象是否为空的方法

《Python中判断对象是否为空的方法》在Python开发中,判断对象是否为“空”是高频操作,但看似简单的需求却暗藏玄机,从None到空容器,从零值到自定义对象的“假值”状态,不同场景下的“空”需要精... 目录一、python中的“空”值体系二、精准判定方法对比三、常见误区解析四、进阶处理技巧五、性能优化

使用Python构建一个Hexo博客发布工具

《使用Python构建一个Hexo博客发布工具》虽然Hexo的命令行工具非常强大,但对于日常的博客撰写和发布过程,我总觉得缺少一个直观的图形界面来简化操作,下面我们就来看看如何使用Python构建一个... 目录引言Hexo博客系统简介设计需求技术选择代码实现主框架界面设计核心功能实现1. 发布文章2. 加

python logging模块详解及其日志定时清理方式

《pythonlogging模块详解及其日志定时清理方式》:本文主要介绍pythonlogging模块详解及其日志定时清理方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录python logging模块及日志定时清理1.创建logger对象2.logging.basicCo

Python如何自动生成环境依赖包requirements

《Python如何自动生成环境依赖包requirements》:本文主要介绍Python如何自动生成环境依赖包requirements问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录生成当前 python 环境 安装的所有依赖包1、命令2、常见问题只生成当前 项目 的所有依赖包1、

如何将Python彻底卸载的三种方法

《如何将Python彻底卸载的三种方法》通常我们在一些软件的使用上有碰壁,第一反应就是卸载重装,所以有小伙伴就问我Python怎么卸载才能彻底卸载干净,今天这篇文章,小编就来教大家如何彻底卸载Pyth... 目录软件卸载①方法:②方法:③方法:清理相关文件夹软件卸载①方法:首先,在安装python时,下