首页 > 编程语言 >软件测试|超好用超简单的Python GUI库——tkinter(五)

软件测试|超好用超简单的Python GUI库——tkinter(五)

时间:2023-06-21 15:45:06浏览次数:66  
标签:控件 tkinter Python win 输入框 tk time Entry 软件测试

前言

在之前,我们介绍了tkinter的button控件,label控件,今天我们介绍一下entry控件,entry控件我们可以理解为界面的内容输入框,实现GUI界面与用户的信息交互,最典型的场景就是我们在登录时需要输入的账号密码。

获取更多技术资料,请点击!

Entry 控件使用起来非常简单,下面对该控件做简单的介绍。基本语法格式如下:

tk_entry = Entry( master, option, ... )

Entry控件基本属性

Entry控件常用属性如下:

属性名称 说明
exportselection 默认情况下,如果在输入框中选中文本会复制到粘贴板,如果要忽略这个功能,可以设置为 exportselection=0
selectbackground 选中文字时的背景颜色
selectforeground 选中文字时的前景色
show 指定文本框内容以何种样式的字符显示,比如密码可以将值设为 show="*"
textvariable 输入框内值,也称动态字符串,使用 StringVar() 对象来设置,而 text 为静态字符串对象
xscrollcommand 设置输入框内容滚动条,当输入的内容大于输入框的宽度时使用户

动态数据类型展示

表格中提及了 StringVar() 方法,和其同类的方法还有 BooleanVar()、DoubleVar()、IntVar() 方法,不难看出他们分别代表一种数据类型,即字符串、布尔值、浮点型、整型,这些方法并不属于 Python 内置方法,而是 Tkinter 特有的方法。

在界面编程的过程中,有时我们需要“动态跟踪”一些变量值的变化,从而保证值的变换及时的反映到显示界面上,但是 Python 内置的数据类型是无法这一目的的,因此使用了 Tcl 内置的对象,我们把这些方法创建的数据类型称为“动态类型”,比如 StringVar() 创建的字符串,称为“动态字符串”。

比如我们创建一个界面,实时展示我们的时间,代码如下:

import tkinter as tk
import time

time_window = tk.Tk()


time_window.geometry('450x150+100+100')
time_window.resizable(0,0)
time_window.title('北京时间')
# 获取时间的函数
def gettime():
    # 获取当前时间
    dstr.set(time.strftime("%H:%M:%S"))
    # 每隔 1s 调用一次 gettime()函数来获取时间
    time_window.after(1000, gettime)
# 生成动态字符串
dstr = tk.StringVar()
# 利用 textvariable 来实现文本变化
lb = tk.Label(time_window,textvariable=dstr,fg='green',font=("微软雅黑",85))
lb.pack()
# 调用生成时间的函数
gettime()
# 显示窗口
time_window.mainloop()

运行程序结果如下:

在这里插入图片描述

Entry常用方法

Entry 控件常用方法,如下所示

方法 说明
delete() 根据索引值删除输入框内的值
get() 获取输入框内的是
set() 设置输入框内的值
insert() 在指定的位置插入字符串
index() 返回指定的索引值
select_clear() 取消选中状态
select_adujst() 确保输入框中选中的范围包含 index 参数所指定的字符,选中指定索引和光标所在位置之前的字符
select_from (index) 设置一个新的选中范围,通过索引值 index 来设置
select_present() 返回输入框是否有处于选中状态的文本,如果有则返回 true,否则返回 false。
select_to() 选中指定索引与光标之间的所有值
select_range() 选中指定索引与光标之间的所有值,参数值为 start,end,要求 start 必须小于 end。

注:在 Entry 控件中,我们可以通过以下方式来指定字符的所在位置:

  • 数字索引:表示从 0 开始的索引数字
  • "ANCHOE":在存在字符的情况下,它对应第一个被选中的字符
  • "END":对应已存在文本中的最后一个位置
  • "insert(index,'字符'):将字符插入到 index 指定的索引位置

使用示例如下:

import tkinter as tk
win = tk.Tk()
# 设置主窗口
win.geometry('250x100')
win.title("拜仁慕尼黑")

win.resizable(0,0)
# 创建输入框控件
entry1 = tk.Entry(win)
# 放置输入框,并设置位置
entry1.pack(padx=20, pady=20)
entry1.delete(0, "end")
# 插入默认文本
entry1.insert(0,'拜仁慕尼黑,FC Bayern forever no.1!')
# 得到输入框字符串
print(entry1.get())
# 删除所有字符
# entry1.delete(0, tk.END)
win.mainloop()

运行程序结果如下:

在这里插入图片描述

注册登录示例

import tkinter as tk
win =tk.Tk()
# 设置主窗口
win.geometry('300x300')
win.title("英雄联盟登录程序")

win.resizable(0,0)
# 新建文本标签
labe1 = tk.Label(win,text="账号:")
labe2 = tk.Label(win,text="密码:")
# grid()控件布局管理器,以行、列的形式对控件进行布局,后续会做详细介绍
labe1.grid(row=0)
labe2.grid(row=1)
# 为上面的文本标签,创建两个输入框控件
entry1 = tk.Entry(win)
entry2 = tk.Entry(win)
# 对控件进行布局管理,放在文本标签的后面
entry1.grid(row=0, column=1)
entry2.grid(row=1, column=1)
# 显示主窗口
win.mainloop()

运行程序如下图所示:

在这里插入图片描述

注:这只是一个基础的GUI界面,没有进行效果渲染等处理,距离和样式都没有进行设置。

总结

本文对tkinter的Entry控件进行了介绍,主要介绍了动态类型数据展示以及一些常用方法的使用,下一篇文章我们将介绍Entry控件的输入验证功能。

获取更多技术资料,请点击!

标签:控件,tkinter,Python,win,输入框,tk,time,Entry,软件测试
From: https://www.cnblogs.com/hogwarts/p/17496367.html

相关文章

  • 软件测试|数据处理神器pandas教程(十一)
    前言“去重”通过字面意思不难理解,就是删除重复的数据。在一个数据集中,找出重复的数据删并将其删除,最终只保存一个唯一存在的数据项,这就是数据去重的整个过程。删除重复数据是数据分析中经常会遇到的一个问题。通过数据去重,不仅可以节省内存空间,提高写入性能,还可以提升数据集的......
  • 三秒看懂Python yield
    业务场景:一个FastAPI构建的网关,数据进来时立即给予一次响应,表示:“收到,我已开始执行。”,然后分发任务另起一个线程异步执行。原本代码写的在异步里又起了一个异步等任务执行,这样不影响下面的return立刻响应。逻辑看起很繁琐,那有没有办法,能让函数在"return":“收到”之后,继续执行呢?......
  • python如何用openpyxl 创建表格,写入数据
    1.安装openpyxl库,可以选择豆瓣源,直接可执行,是一次性的.不需要设置.pipinstallopenpyxl-ihttp://pypi.douban.com/simple--trusted-hostpypi.douban.com 2.我们这里创建一个表(不是打开本地),并插入数据'sandx'是设置表中单表sheet的标题栏.插入数......
  • python代码-基于深度强化学习的微能源网能量管理与优化策略研究 关键词:微能源网;能量管
    python代码-基于深度强化学习的微能源网能量管理与优化策略研究关键词:微能源网;能量管理;深度强化学习;Q-learning;DQN内容::面向多种可再生能源接入的微能源网,提出一种基于深度强化学习的微能源网能量管理与优化方法。该方法使用深度Q网络(deepQnetwork,DQN)对预测负荷、风光等可......
  • 基于模型强化学习的离网微电网终身控制Python源代码
    基于模型强化学习的离网微电网终身控制Python源代码离网微网的终身控制问题包括两个任务,即对微网设备的状态进行估计和通过预测未来消费量和可再生产量来考虑不确定性的运行规划。有效控制的主要挑战来自于随时间发生的各种变化。提出了一个用于农村电气化离网微电网建模的开源强......
  • Python 转换为元组类型
    给对象添加一个__iter__函数:classCover:def__init__(self,temp,accel_x,accel_y,accel_z,cover_status):self.temp=tempself.accel_x=accel_xself.accel_y=accel_yself.accel_z=accel_zself.cover_status=......
  • 使用python下载某易云歌曲
    1、某易云的外链地址:url='http://music.163.com/song/media/outer/url?id='+歌曲的id值+'.mp3' 如:http://music.163.com/song/media/outer/url?id=1974443814.mp32、通过歌曲id下载:importrequestsimportosimportbs4fromseleniumimportwebdriverfro......
  • python请求有关ja3指纹问题
    遇见一个网站采集,无论怎样都返回空数据(实际上是有数据的),但是抓包下来又确实是那样的,请教了一些人推测是指纹验证,拜读了网上其他大佬的博客文章后实验了一下,发现确实是这个问题!第一次知道tcp还有这个东西,让我大受震撼,值此搬运一下。参考链接及来源:Python爬虫进阶必备|JA3指......
  • python.制图.饼状图
    1defsendMsgtemplate_card(fail,passnum,casename,casetime,path):importpandasaspdimportmatplotlib.pyplotasplt#将测试结果转换为数值类型data1={'errors':'0','failures':fail,'skipped':'1'......
  • Ubuntu安装管理不同版本的python
    ubuntu多个版本安装背景:本地环境Ubuntu22.0464-bit,默认安装python3.10.6,未安装pip,venv需求:安装python3.8,并安装两版本对应pip,venv1增加PPA软件源deadsnakessudoaptinstallsoftware-properties-commonsudoadd-apt-repositoryppa:deadsnakes/ppa2跟新系统的......