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控件介绍及使用示例。

相关推荐
碳苯4 分钟前
【rCore OS 开源操作系统】Rust 枚举与模式匹配
开发语言·人工智能·后端·rust·操作系统·os
结衣结衣.17 分钟前
C++ 类和对象的初步介绍
java·开发语言·数据结构·c++·笔记·学习·算法
学习使我变快乐18 分钟前
C++:静态成员
开发语言·c++
TJKFYY19 分钟前
Java.数据结构.HashSet
java·开发语言·数据结构
kylinxjd20 分钟前
spring boot发送邮件
java·spring boot·后端·发送email邮件
杰哥在此28 分钟前
Python知识点:如何使用Multiprocessing进行并行任务管理
linux·开发语言·python·面试·编程
小白学大数据28 分钟前
User-Agent在WebMagic爬虫中的重要性
开发语言·爬虫·http
ROBIN__dyc34 分钟前
C语言基本概念
c语言·开发语言
zaim13 小时前
计算机的错误计算(一百一十四)
java·c++·python·rust·go·c·多项式
学习使我变快乐3 小时前
C++:const成员
开发语言·c++