tkinter基础组件——Listbox

tkinter 的 Listbox 组件用于显示和选择一个或多个项目的列表。它是一个非常有用的组件,可以在它上面进行各种操作,例如添加、删除、选择项目等。下面具体介绍Listbox组件常用的属性和方法:

一、常用属性

1、height:设置 Listbox 的显示行数

box = tk.Listbox(app, height=10)

2、width:设置 Listbox 的宽度(以字符数为单位)

box = tk.Listbox(app, width=20)

3、listvariable:绑定一个 Tkinter 变量,以便设置列表项

lists = tk.StringVar(value=['item1', 'item2', 'item3', 'item4'])
box = tk.Listbox(app, listvariable=lists)

4、fg:设置项目文本的字体颜色

box = tk.Listbox(app, fg="blue")

5、bg:设置 Listbox 的背景颜色

box = tk.Listbox(app, bg="lightyellow")

6、selectmode:设置选择模式,默认单选,可以设置值有'single''browse''multiple' 或 'extended'

box = tk.Listbox(app, selectmode="multiple")

7、activestyle:设置鼠标悬停时的显示样式,可以是 'dotbox''underline' 或 'none'

box = tk.Listbox(app, activestyle="underline")

二、常用方法

1、insert(index, *elements):在指定位置插入一个或多个列表项,index 可以是整数索引或 'end'

box.insert(tk.END, 'new')

2、delete(first, last=None):删除从 first 到 last 位置的项目。如果只提供 first 参数,将删除该位置的单个项目

 box.delete(0)

3、get(first, last=None):获取从 first 到 last 位置的项目。如果只提供 first 参数,将返回该位置的单个项目

item = box.get(0)

4、size():获取 Listbox 中项目的总数

count = box.size()

5、curselection():获取当前选中项目的索引

selected_item = box.curselection()

6、selection_set(first, last=None):选择从 first 到 last 位置的项目。如果只提供 first 参数,将选择该位置的单个项目

box.select_set(0, 1)

7、selection_clear(first, last=None):取消选择从 first 到 last 位置的项目。如果只提供 first 参数,将取消选择该位置的单个项目

box.selection_clear(0, 1)

8、bind:可以将事件绑定到 Listbox 组件,例如在用户选择某个项目时触发某个事件

box.bind("<<ListboxSelect>>", on_select)

三、完整示例

import tkinter as tk
from tkinter import messagebox
app = tk.Tk()
app.geometry("500x300+400+300")
box = tk.Listbox(app, height=10, width=20, fg="blue", bg="lightyellow", activestyle="underline")
for i in range(5):
    box.insert(tk.END, f"Item {i+1}")
box.place(x=10, y=10)

print(box.get(0))
print(box.size())


def on_select(event):
    selecteds = box.curselection()
    if selecteds:
        current_sel = selecteds[0]
        box.selection_clear(0, tk.END)
        box.selection_set(current_sel)
    messagebox.showinfo("Hello", 'item selected')


box.bind("<<ListboxSelect>>", on_select)


def insert_item():
    box.insert(tk.END, 'new')


def delete_item():
    box.selection_clear(0, 1)


insert_btn = tk.Button(app, text="添加", command=insert_item)
insert_btn.place(x=10, y=200)
delete_btn = tk.Button(app, text="删除", command=delete_item)
delete_btn.place(x=60, y=200)
app.mainloop()

实现效果如下:

03452d38ebd44e3ab27391cd7081ce63.gif

 

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

咬尾巴的猫在coding

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值