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

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

时间:2023-07-25 19:46:28浏览次数:41  
标签:选项 控件 列表框 tkinter Python win listbox1 Listbox 软件测试

前言

我们在日常使用各种桌面软件时,当我们想要搜索一个内容时,都会出现一个列表框,供我们选择,如下图:

在这里插入图片描述

Tkinter提供了列表框(Listbox)控件来实现类似的功能。

Listbox控件

列表框,即 Listbox。在使用 Tkinter 进行 GUI 编程的过程中,如果需要用户自己进行选择时就可以使用列表框控件。列表框中的选项可以是多个条目,也可以是单个唯一条目,但常用于多个条目。

列表框控件(Listbox)常用方法

方法 说明
activate(index) 将给定索引号对应的选项激活,即文本下方画一条下划线
bbox(index) 返回给定索引号对应的选项的边框,返回值是一个以像素为单位的 4 元祖表示边框:(xoffset, yoffset, width, height), xoffset 和 yoffset 表示距离左上角的偏移位置
curselection() 返回一个元组,包含被选中的选项序号(从 0 开始)
delete(first, last=None) 删除参数 first 到 last 范围内(包含 first 和 last)的所有选项
get(first, last=None) 返回一个元组,包含参数 first 到 last 范围内(包含 first 和 last)的所有选项的文本
index(index) 返回与 index 参数相应选项的序号
itemcget(index, option) 获得 index 参数指定的项目对应的选项(由 option 参数指定)
itemconfig(index, **options) 设置 index 参数指定的项目对应的选项(由可变参数 **option 指定)
nearest(y) 返回与给定参数 y 在垂直坐标上最接近的项目的序号
selection_set(first, last=None) 设置参数 first 到 last 范围内(包含 first 和 last)选项为选中状态,使用 selection_includes(序号) 可以判断选项是否被选中。
size() 返回 Listbox 组件中选项的数量
xview(*args) 该方法用于在水平方向上滚动 Listbox 组件的内容,一般通过绑定 Scollbar 组件的 command 选项来实现。 如果第一个参数是 "moveto",则第二个参数表示滚动到指定的位置:0.0 表示最左端,1.0 表示最右端;如果第一个参数是 "scroll",则第二个参数表示滚动的数量,第三个参数表示滚动的单位(可以是 "units" 或 "pages"),例如:xview("scroll", 2, "pages")表示向右滚动二行。
yview(*args) 该方法用于在垂直方向上滚动 Listbox 组件的内容,一般通过绑定 Scollbar 组件的 command 选项来实现

Listbox控件特有属性

属性 说明
listvariable 1.指向一个 StringVar 类型的变量,该变量存放 Listbox 中所有的项目
2.在 StringVar 类型的变量中,用空格分隔每个项目,例如 var.set("c c++ java python")
selectbackground 指定当某个项目被选中的时候背景颜色,默认值由系统指定
selectborderwidth 1.指定当某个项目被选中的时候边框的宽度
2.默认是由 selectbackground 指定的颜色填充,没有边框
3.如果设置了此选项,Listbox 的每一项会相应变大,被选中项为 "raised" 样式
selectforeground 指定当某个项目被选中的时候文本颜色,默认值由系统指定
selectmode 决定选择的模式,tk 提供了四种不同的选择模式,分别是:"single"(单选)、"browse"(也是单选,但拖动鼠标或通过方向键可以直接改变选项)、"multiple"(多选)和 "extended"(也是多选,但需要同时按住 Shift 键或 Ctrl 键或拖拽鼠标实现),默认是 "browse"
setgrid 指定一个布尔类型的值,决定是否启用网格控制,默认值是 False
takefocus 指定该组件是否接受输入焦点(用户可以通过 tab 键将焦点转移上来),默认值是 True
xscrollcommand 为 Listbox 组件添加一条水平滚动条,将此选项与 Scrollbar 组件相关联即可
yscrollcommand 为 Listbox 组件添加一条垂直滚动条,将此选项与 Scrollbar 组件相关联即可

创建列表框控件

创建列表框,代码如下:

# 创建一个列表控件,并增加相应的选项
from tkinter import *
# 创建主窗口
win = Tk()
win.title("拜仁慕尼黑")
win.geometry('400x200')

# 创建列表选项
listbox1 =Listbox(win)
listbox1.pack()
# i表示索引值,item 表示值,根据索引值的位置依次插入
for i,item in enumerate(["穆勒","穆西亚拉","萨内","马内","德里赫特"]):
    listbox1.insert(i,item)
# 显示窗口
win.mainloop()

生成的窗口如下:

在这里插入图片描述

除了上述使用 enumerate() 来实现选项插入的方法外,我们还可以使用 "end" 实现,它表示将选项插入到最后一个位置,所以“Java”一定会被插入到最后一个位置上,而之前的选项会依次向前排列,如下所示:

from tkinter import *
# 创建主窗口
win = Tk()
win.title("拜仁慕尼黑")
win.geometry('400x200')

# 创建列表选项
listbox1 =Listbox(win)
listbox1.pack()
# i表示索引值,item 表示值,根据索引值的位置依次插入
for item in ["穆勒","穆西亚拉","萨内","马内","德里赫特"]:
    listbox1.insert("end",item)
# 显示窗口
win.mainloop()

程序运行结果:

在这里插入图片描述

增加滚动条和删除功能

为上述示例增加一个滚动条和选项的删除功能,如下所示:

from tkinter import *
# 创建主窗口
win = Tk()
win.title("拜仁慕尼黑")
win.geometry('400x180')
# 创建滚动条
s = Scrollbar(win)
# 设置垂直滚动条显示的位置,使得滚动条,靠右侧;通过 fill 沿着 Y 轴填充
s.pack(side = RIGHT,fill = Y)
# 将 selectmode 设置为多选模式,并为Listbox控件添加滚动条
listbox1 =Listbox(win,selectmode = MULTIPLE,height =5, yscrollcommand = s.set)
# i 表示索引值,item 表示值,根据索引值的位置依次插入
for i,item in enumerate(range(1,50)):
    listbox1.insert(i,item)
listbox1.pack()
# 设置滚动条,使用 yview使其在垂直方向上滚动 Listbox 组件的内容,通过绑定 Scollbar 组件的 command 参数实现
s.config(command = listbox1.yview)
# 使用匿名函数,创建删除函数,点击删除按钮,会删除选项
bt = Button(win,text='删除',command = lambda x = listbox1:x.delete(ACTIVE))
# 将按钮放置在底部
bt.pack(side = BOTTOM)
# 显示窗口
win.mainloop()

程序运行结果,如下所示:

在这里插入图片描述

StringVar() 添加列表选项

通过 StringVar() 方法动态地获取列表框中的选项,示例代码如下:

import tkinter as tk
from tkinter import messagebox
window = tk.Tk()
window.title("拜仁慕尼黑")
window.geometry('400x180')

# 创建变量,用var1用来接收鼠标点击的具体选项内容
var1 = tk.StringVar()
l = tk.Label(window, bg='#B0B0B0', font=('微软雅黑', 15), width=20, textvariable=var1)
l.pack()
# 创建一个按钮的点击事件
def click_button():
    # 使用 curselection来选中文本
    try:
        val = lb.get(lb.curselection())
    # 设置label值
        var1.set(val)
    except Exception as e:
        e = '发现一个错误'
        messagebox.showwarning(e,'没有选择任何条目')
# 创建一个按钮并放置,点击按钮调用print_selection函数
b1 = tk.Button(window, text='获取当前选项', command=click_button)
b1.pack()
# 创建Listbox并为其添加内容
var2 = tk.StringVar()
var2.set(("格雷茨卡", "科曼", "戴维斯", "帕瓦尔"))
# 创建Listbox,通过 listvariable来传递变量
lb = tk.Listbox(window, listvariable=var2)
# 新建一个序列,然后将值循环添加到Listbox控件中
items = ["穆勒", "穆西亚拉", "马内", "萨内", "基米希", "德里赫特"]
for i in items:
    lb.insert('end', i)  # 从最后一个位置开始加入值
lb.insert(0, '诺伊尔')  # 在第一个位置插入一段字符串
lb.delete(4)  # 删除第2个位置处的索引
lb.pack()
#主窗显示
window.mainloop()

运行脚本结果如下:

在这里插入图片描述

总结

本文主要介绍了tkinter的listbox列表框控件的使用,后续我们将介绍下拉框控件的使用。

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

标签:选项,控件,列表框,tkinter,Python,win,listbox1,Listbox,软件测试
From: https://www.cnblogs.com/hogwarts/p/17580796.html

相关文章

  • 软件测试|超好用超简单的Python GUI库——tkinter(十)
    前言上文我们介绍了tkinter的列表框处理,我们在日常生活中还会遇到组合框的情况,tkinter同样可以实现这个功能,下面我们来介绍一下tkinter如何实现组合框。Combobox控件上一篇文章,我们知道Listbox是一个供用户从列表项中选择相应条目的控件。但在有些情况下,比如列表的项目过多时......
  • 软件测试|Python自动化测试实现的思路
    Python自动化测试常用于Web应用、移动应用、桌面应用等的测试Python自动化实现思路通常分为以下几步:1.确定自动化测试的范围和目标:首先需要明确需要进行自动化测试的范围和目标,包括测试场景、测试用例、测试数据等。2.选择自动化测试工具和框架:根据测试目标和需求,选择适合......
  • python下表为偶数的字符串
    如何实现“python下标为偶数的字符串”1.概述在Python中,字符串是不可变的,可以通过下标访问字符串的各个字符。为了实现提取下标为偶数的字符串,我们可以采取以下步骤:输入一个字符串;遍历字符串,提取下标为偶数的字符;将提取的字符拼接成一个新的字符串;输出结果。下表为偶数的......
  • python无向图生成
    无向图生成与分析前言在计算机科学中,图是一种非常重要的数据结构,用于描述对象之间的关系。图由节点(顶点)和边组成,其中节点表示对象,边表示节点之间的关系。根据边的方向性,图可以分为有向图和无向图。本文将重点介绍无向图的生成与分析。无向图的定义和表示无向图是一种图形结构,其......
  • python文件头 注释 模版
    Python文件头注释模版在Python程序开发中,为了方便团队协作和代码维护,编写清晰的文档注释是非常重要的。而文件头注释是指放置在Python文件的开头部分,用于描述文件的基本信息和功能。本文将介绍一种常用的Python文件头注释模版,以及如何使用它来编写规范的注释。文件头注释的作用......
  • python文件列表 页面展示
    Python文件列表页面展示在Python编程中,我们经常需要处理文件和文件夹。而文件列表是指一个包含多个文件的集合。在许多情况下,我们需要展示一个文件列表,并且以易读的方式呈现给用户。本文将介绍如何使用Python来实现一个页面展示文件列表的功能,并提供代码示例。使用os模块获取文......
  • python最大公约数计算
    Python最大公约数计算简介在数学中,最大公约数又称为最大公因数,是指能够同时整除两个或多个整数的最大正整数。在Python中,我们可以使用欧几里得算法来计算最大公约数。欧几里得算法欧几里得算法,也叫辗转相除法,是一种求最大公约数的算法。算法基于以下原理:两个整数的最大公约数等......
  • python字符串转数组
    Python字符串转数组的实现引言在Python中,字符串是由字符组成的,而数组则是由元素组成的数据结构。有时候我们需要将一个字符串转换成一个数组,以便于对其中的元素进行操作。本文将教授如何实现Python字符串转数组的方法。实现步骤下面是将字符串转换为数组的步骤,我们可以用表格的......
  • python字符串转utf8
    Python字符串转UTF-8在Python中,字符串是一种常见的数据类型,用于存储和处理文本数据。在处理字符串时,我们经常需要将字符串转换成不同的编码格式,其中UTF-8是最常用的一种编码格式。UTF-8编码被广泛应用于国际化和多语言环境中,支持包括中文在内的世界上几乎所有的字符。什么是UTF-8......
  • python字符串中有双引号怎么输出
    解决Python字符串中包含双引号的输出问题在Python中,字符串可以使用单引号或双引号括起来。如果字符串中本身包含双引号,则需要采取适当的方法来处理,以避免语法错误或输出错误的结果。下面将介绍几种方法来解决Python字符串中包含双引号的输出问题。1.转义字符转义字符是以反斜......