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控件并添加几个元素

示例如下:

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)

效果如下:

Python tkinter (6) Listbox_第1张图片

 

添加元素

两种添加方式

添加到开始

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

示例如下:

# 在开始添加
list1.insert(tkinter.ACTIVE, '《面朝大海春暖花开》')

添加到最后

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

示例如下:

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

删除元素

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

删除单个

示例如下:

list1.delete(1)

删除多个

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

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

示例如下:

list1.delete(1, 3)

选中元素

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

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

示例如下:

list1.select_set(1)
list1.select_set(2, 4)

效果如下:

Python tkinter (6) Listbox_第2张图片

取消选中元素

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

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

示例如下:

list1.select_clear(3)
list1.select_clear(1, 2)

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

获取列表元素个数

示例如下:

print(list1.size())

获取值

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

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

示例如下:

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

返回选中

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

示例如下:

print(list1.curselection())

判断是否选中

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

示例如下:

print(list1.select_includes(3))

绑定变量

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

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

示例如下:

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)

打印当前列表选项

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

示例如下:

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

设置选项

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

示例如下:

lv.set(('选项1', '选项2'))

绑定事件

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

示例如下:

def my_print(event):
    print(list1.get(list1.curselection()))


# 双击按钮事件
list1.bind('', my_print)

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

效果如下:

Python tkinter (6) Listbox_第3张图片

连选

EXTENDED 可以使listbox支持shift和control;

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

示例如下:

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)

绑定滚动条

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

示例如下:

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()

效果如下:

Python tkinter (6) Listbox_第4张图片

支持多选

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

示例如下:

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 (6) Listbox_第5张图片

总结

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

你可能感兴趣的:(Python,python,开发语言,后端)