Python的标准Tk GUI工具包的接口
tkinter系列文章
Python tkinter (1) ------ Label标签
Python tkinter (2) ------ Button标签
Python tkinter (3) ------ Entry标签
Python tkinter (4) ------ Text控件
目录
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控件介绍及使用示例。