赞
踩
tkinter系列文章
Python tkinter (2) —— Button标签
目录
列表框控件,可以包含一个或者多个文本框
作用:在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)
效果如下:
两种添加方式
使用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)
效果如下:
取消选中:参数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('<Double-Button-1>', my_print)
当对列表元素双击后,会在控制台打印出选中的元素。
效果如下:
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()
效果如下:
通过更改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 Listbox控件介绍及使用示例。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。