欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python GUI 之 Listbox 学习

程序员文章站 2022-03-02 13:25:12
...

Python GUI 之 Combobox 学习

记录自己学习Python的点点滴滴,99%的知识是从网络上抄来的,如果冒犯那位高人,还请海涵。

1. 序言

本章介绍tkinter的Listbox控件(widget)。

2. 环境变量


os: windows10 64bit
Python: 3.7.0


3. Listbox列表控件的语法

Listbox 为列表框控件,可以包含一个或多个文本项(text item),可以设置为单选或多选。
语法为 Listbox(master, option, …)

常用的参数:

参数 描述
master 父窗口
bg 背景色,如 bg = “Blue”
fg 前景色,如 fg = “Yellow”
hieght 设置显示高度、如果未设置此项,其大小以适应内容标签
width 设置显示宽度,如果未设置此项,其大小以适应内容标签
relief 指定外观装饰边界附近的标签,默认是平的,可以设置的参数:flat、groove、raised、ridge、solid、sunken
state 设置组件状态;正常(normal),**(active),禁用(disabled)
bd 设置边框bordwidth的大小,缺省为1或2个像素
selectmode 选择模式:缺省(default)为浏览单选 BROWSE;多选 MULTIPLE;通过鼠标的移动选择 EXTENDED:shift和ctrl配合使用。
listvariable 设置listvariable属性

一些常用的函数(方法):

参数 描述
insert 追加item,如listbox.insert(END,’a’), listbox.insert(3,’a’)
delete 删除item,如listbox.delete(3,4),删除全部list.delete(0,END)
select_set 选中,如listbox.select_set(0,2)
select_clear 取消选中如listbox.select_clear(0,1)
get 返回制定索引的项值,如listbox.get(1);返回多个项值,返回元组,如listbox.get(0,2);返回当前选中项的索引listbox.curselection()
curselection() 返回当前选中项的索引,如listbox.curselection()
selection_includes 判断当前选中的项目中是否包含某项,如listbox.selection_includes(4)

事件:
ListboxSelect

需要注意的地方:
Listbox 没有command参数,不能用command来触发别的函数。

示列

from tkinter import *

win = Tk()  #Create a tkinter instance
Label(win, text = "Below is a list box").grid(column = 0, row = 0)
list_data1 = ["a","b","c","1","2","3"]
list_value = StringVar(value = list_data1)
listbx = Listbox(win, listvariable = list_value)
listbx.grid(column = 0, row = 1)

#delete data of list box
#listbx.delete(0, END), delete all data
listbx.delete(4, END) #delete data ["2","3"]

#insert data to list box
list_data2 = ["d","e",5,6]
for value in list_data2:
    listbx.insert(END, value)

#makeup list view, put a background color for rows
for i in range(listbx.size()):  #listbx.size(), get the list size
    if not i%2:
        listbx.itemconfig(i, bg = "yellow")  #change the background color
    else:
        listbx.itemconfig(i, fg = "blue") #change the foreground color

#command of list box selection
def showselection(*args):
    print("Your selection")
    print(listbx.curselection())  #print out the selected data
    print("Your get")
    print(listbx.get(2,4))  #get the data by index

#bind the selection envent to list box
listbx.bind("<<ListboxSelect>>", showselection)

win.mainloop()