小白学tkinter(Listbox组件 多选组件)

**

创建一个最基本的Listbox组件

**



'''1、当Radiobutton和Checkbutton设置的按钮数不够用的时候,选择用Listbox组件。
2、当创建一个Listbox组件时,他是空的。所以首先做的事情就是往里边添加n行文本。
使用insert方法,insert(第一个参数是索引号(0,END),第二个参数是所插入的字符串)。
'''
from tkinter import *
root = Tk()
theLB = Listbox(root) #这里还有一个selectmode选项,默认是BROWSE(单选,拖动鼠标或方向键可以改变选项),
                                                #还有SINGLE(纯粹单选),
                                                #MULTIPLE(多选)
                                                #EXTENDED(多选,但要按住shifu或者ctrl)
theLB.pack()
for item in ['貂蝉','西施','王昭君','杨玉环']:
    theLB.insert(END,item) #为什么用END作为索引号?
                           #因为每迭代一次就要加到该数后边,其实就是最后一项END
theButton = Button(root,text = '删除',command = lambda x = theLB:x.delete(ACTIVE))
#有插入就有删除,呵呵!~ command返回一个函数。lambda 后边的是函数名,等号后边是参数,
#再一个等号后边是返回值(return)。相当于
'''def x(theLB):
    return x.delete(ACTIVE)'''

theButton.pack()
mainloop()

Tkinter ,Combobox 默认只支持单选,不支持多选。如果要实现多选功能,我们可以通过一些小技巧来实现。 一种方法是使用 Listbox 和 Scrollbar 来模拟多选的功能,具体步骤如下: 1. 创建 Combobox 和 Listbox 控件,并设置 Listbox多选模式为 EXTENDED。 2. 将 Listbox 放置在 Combobox 的下方,使用 pack 或 grid 等方法进行布局。 3. 绑定 Combobox 的点击事件,当点击 Combobox 时,显示 Listbox。 4. 绑定 Listbox 的选择事件,将选择的值添加到 Combobox ,并更新 Combobox 的值。 下面是一个简单的示例代码: ```python import tkinter as tk from tkinter import ttk class MultiCombobox(ttk.Combobox): def __init__(self, master=None, **kw): self.listbox = None ttk.Combobox.__init__(self, master, **kw) self.bind('<Button-1>', self.show_listbox) def show_listbox(self, event): if not self.listbox: self.listbox = tk.Listbox(self.master, selectmode=tk.MULTIPLE) self.listbox.bind('<FocusOut>', lambda event: self.listbox.pack_forget()) self.listbox.bind('<Escape>', lambda event: self.listbox.pack_forget()) self.listbox.bind('<<ListboxSelect>>', self.update_combobox) self.listbox.pack() self.listbox.delete(0, tk.END) for value in self['values']: self.listbox.insert(tk.END, value) self.listbox.place(x=self.winfo_x(), y=self.winfo_y()+self.winfo_height()) self.listbox.focus_set() def update_combobox(self, event): selected_items = [self.listbox.get(idx) for idx in self.listbox.curselection()] self.set(', '.join(selected_items)) # Example usage root = tk.Tk() root.geometry('200x200') cb = MultiCombobox(root, values=['A', 'B', 'C', 'D']) cb.pack() root.mainloop() ``` 这个示例代码,我们继承了 ttk.Combobox 类,创建了一个新的类 MultiCombobox。在 MultiCombobox ,我们创建了一个 Listbox,用于显示多选项。在点击 Combobox 时,会显示 Listbox,并将 Combobox 的值添加Listbox 。在选择 Listbox 的值时,会更新 Combobox 的值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值