Python tkinter (6) Listbox

Python的标准Tk GUI工具包的接口

tkinter系列文章

python tkinter窗口简单实现

Python tkinter (1) ------ Label标签

Python tkinter (2) ------ Button标签

Python tkinter (3) ------ Entry标签

Python tkinter (4) ------ Text控件

GUI

目录

Listbox

创建listbox

添加元素

添加到开始

添加到最后

删除元素

删除单个

删除多个

选中元素

取消选中元素

获取列表元素个数

获取值

返回选中

判断是否选中

绑定变量

打印当前列表选项

设置选项

绑定事件

连选

绑定滚动条

支持多选

总结


Listbox

列表框控件,可以包含一个或者多个文本框

作用:在listbox控件的小窗口显示一个字符串

创建listbox

创建listbox控件并添加几个元素

示例如下:

python 复制代码
import tkinter

tk = tkinter.Tk()
tk.title('listbox示例')
tk.geometry('300x200+200+20')

'''
列表框控件,可以包含一个或者多个文本框
作用:在listbox控件的小窗口显示一个字符串
'''

# 1.创建一个listbox,添加几个元素
list1 = tkinter.Listbox(tk, selectmode=tkinter.BROWSE)
list1.pack()
for item in ['从明天起', '做一个幸福的人', '喂马',  '劈柴', '周游世界']:
    # 按照顺序添加
    list1.insert(tkinter.END, item)

效果如下:

添加元素

两种添加方式

添加到开始

使用insert方法,参数为tkinter.ACTIVE和要添加的元素。

示例如下:

python 复制代码
# 在开始添加
list1.insert(tkinter.ACTIVE, '《面朝大海春暖花开》')
添加到最后

还是使用insert方法,参数为tkinter.END和要添加的元素(可为字符串或列表)。

示例如下:

python 复制代码
# 添加元素到最后
list1.insert(tkinter.END, '愿你在尘世获得幸福')
# 将列表当做一个元素添加
list1.insert(tkinter.END, ['我只愿面朝大海', ',', '春暖花开'])

删除元素

通过指定元素索引来删除相应元素

删除单个

示例如下:

python 复制代码
list1.delete(1)
删除多个

Delete有两个参数,一个起始位置索引,第二个为终止位置索引。

当指定第二个元素时,将删除从起始位置到终止位置的所有元素。

示例如下:

python 复制代码
list1.delete(1, 3)

选中元素

参数1为开始的索引,参数2为结束的索引;

如果不指定参数2,只选中第一个索引出的内容。

示例如下:

python 复制代码
list1.select_set(1)
list1.select_set(2, 4)

效果如下:

取消选中元素

取消选中:参数1为开始的索引,参数2为结束的索引;

如果不指定参数2,只取消第一个索引出的内容。

示例如下:

python 复制代码
list1.select_clear(3)
list1.select_clear(1, 2)

注意:测试效果时,需与选中结合使用。

获取列表元素 个数

示例如下:

python 复制代码
print(list1.size())

获取值

获取值:从列表中取值 参数1为开始的索引,参数2为结束的索引;

如果不指定参数2,只获取第一个索引出的内容。

示例如下:

python 复制代码
print(list1.get(1, 3))
# 执行结果
# ('做一个幸福的人', '喂马', '劈柴')

返回选中

返回当前选中的索引项,元组格式。

示例如下:

python 复制代码
print(list1.curselection())

判断是否选中

判断一个选项是否被选中,返回True或False。

示例如下:

python 复制代码
print(list1.select_includes(3))

绑定变量

创建一个字符串变量与listbox控件进行绑定,

SINGLE与BORWSE相似,但是不支持鼠标按下后移动。

示例如下:

python 复制代码
import tkinter

tk = tkinter.Tk()
tk.title('listbox示例')
tk.geometry('300x200+200+20')

# 绑定变量
lv = tkinter.StringVar()
list1 = tkinter.Listbox(tk, selectmode=tkinter.SINGLE, listvariable=lv)
list1.pack()

for item in ['从明天起', '做一个幸福的人', '喂马', '劈柴', '周游世界']:
    # 按照顺序添加
    list1.insert(tkinter.END, item)

打印当前列表选项

通过绑定的变量可以获取列表中的选项内容。

示例如下:

python 复制代码
print(lv.get())
# 执行结果
# ('从明天起', '做一个幸福的人', '喂马', '劈柴', '周游世界')

设置选项

通过操作绑定变量的set方法,可以更改之前设置的列表元素。

示例如下:

python 复制代码
lv.set(('选项1', '选项2'))

绑定事件

对列表控件绑定一个鼠标双击事件。

示例如下:

python 复制代码
def my_print(event):
    print(list1.get(list1.curselection()))


# 双击按钮事件
list1.bind('<Double-Button-1>', my_print)

当对列表元素双击后,会在控制台打印出选中的元素。

效果如下:

连选

EXTENDED 可以使listbox支持shift和control;

按住shitt,可以实现连选;按住contro1,可以实现多选。

示例如下:

python 复制代码
import tkinter

tk = tkinter.Tk()
tk.title('listbox示例')
tk.geometry('300x200+200+20')

list1 = tkinter.Listbox(tk, selectmode=tkinter.EXTENDED)
list1.pack()

for item in ['从明天起', '做一个幸福的人', '喂马', '劈柴', '周游世界']:
    # 按照顺序添加
    list1.insert(tkinter.END, item)

绑定滚动条

在内容增多后,可以绑定滚动条来下划查看内容。

示例如下:

python 复制代码
import tkinter

tk = tkinter.Tk()
tk.title('listbox示例')
# tk.geometry('300x200+200+20')
# 滚动条 (内容增多时增加滚动条)
scroll = tkinter.Scrollbar(tk)
scroll.pack(side=tkinter.RIGHT, fill=tkinter.Y)
list1 = tkinter.Listbox(tk, selectmode=tkinter.EXTENDED)
# 格外给属性赋值
scroll['command'] = list1.yview()

for item in ['《面朝大海春暖花开》', '从明天起,关心粮食和蔬菜',
             '我有一所房子,面朝大海,春暖花开',
             '从明天起,和每一个亲人通信',
             '告诉他们我的幸福',
             '那幸福的闪电告诉我的',
             '我将告诉每一个人',
             '给每一条河每一座山取一个温暖的名字',
             '陌生人,我也为你祝福',
             '愿你有一个灿烂的前程',
             '愿你有情人终成眷属',
             '愿你在尘世获得幸福',
             '我只愿面朝大海,春暖花开']:
    list1.insert(tkinter.END, item)
    
list1.configure(yscrollcommand=scroll.set)
list1.pack(side=tkinter.LEFT, fill=tkinter.BOTH)

tk.mainloop()

效果如下:

支持多选

通过更改listbox控件属性为MULTIPLE,可通过鼠标点击进行多选和取消。

示例如下:

python 复制代码
import tkinter

tk = tkinter.Tk()
tk.title('简单示例')
tk.geometry('300x200+200+20')

# MULTIPLE 支持多选
list1 = tkinter.Listbox(tk, selectmode=tkinter.MULTIPLE)

for item in ['《面朝大海春暖花开》', '从明天起,关心粮食和蔬菜',
             '我有一所房子,面朝大海,春暖花开',
             '从明天起,和每一个亲人通信',
             '告诉他们我的幸福',
             '那幸福的闪电告诉我的',
             '我将告诉每一个人',
             '给每一条河每一座山取一个温暖的名字',
             '陌生人,我也为你祝福',
             '愿你有一个灿烂的前程',
             '愿你有情人终成眷属',
             '愿你在尘世获得幸福',
             '我只愿面朝大海,春暖花开']:
    list1.insert(tkinter.END, item)
list1.pack()

tk.mainloop()

效果为:

总结

本文主要是Python tkinter Listbox控件介绍及使用示例。

相关推荐
跟着珅聪学java2 小时前
spring boot +Elment UI 上传文件教程
java·spring boot·后端·ui·elementui·vue
我命由我123452 小时前
Spring Boot 自定义日志打印(日志级别、logback-spring.xml 文件、自定义日志打印解读)
java·开发语言·jvm·spring boot·spring·java-ee·logback
蹦蹦跳跳真可爱5893 小时前
Python----计算机视觉处理(Opencv:道路检测之提取车道线)
python·opencv·计算机视觉
徐小黑ACG3 小时前
GO语言 使用protobuf
开发语言·后端·golang·protobuf
0白露4 小时前
Apifox Helper 与 Swagger3 区别
开发语言
Tanecious.5 小时前
机器视觉--python基础语法
开发语言·python
叠叠乐5 小时前
rust Send Sync 以及对象安全和对象不安全
开发语言·安全·rust
ALe要立志成为web糕手5 小时前
SESSION_UPLOAD_PROGRESS 的利用
python·web安全·网络安全·ctf
战族狼魂5 小时前
CSGO 皮肤交易平台后端 (Spring Boot) 代码结构与示例
java·spring boot·后端
Tttian6226 小时前
Python办公自动化(3)对Excel的操作
开发语言·python·excel