当前位置:首页>python>python高阶:21、tkinter库(Listbox组件)

python高阶:21、tkinter库(Listbox组件)

  • 2026-10-12 09:18:47
python高阶:21、tkinter库(Listbox组件)
1、tkinter库的导入和主窗口的创建
import tkinter as tk  #以别名tk导入tkinter库root=tk.Tk()    #创建主窗口的实例winroot.title("Frame组件测试窗口")    #设置窗口的标题root.geometry("200x200+600+200")#设置窗口的大小和位置root.resizable(True,False)      #设置窗口可水平缩放,禁止垂直缩放tk.mainloop()  #进入事件处理循环,防止窗口闪退
2、Listbox组件(类)

Listbox(列表框)是 Tkinter 中的标准控件,用于显示一个字符串列表,并允许用户从中选择一个或多个项目。

(1)Listbox组件常用属性参数

属性
说明

selectmode

选择模式,可选值:SINGLE, BROWSE,MULTIPLE,EXTENDED

height

可见的行数(默认为 10)

width

宽度(单位:字符数)

font

文本字体(三元组)

bg

背景颜色

fg

文本颜色

bd

边框宽度

cursor

鼠标悬停时的光标样式(如 "hand2", "cross")

listvariable

绑定一个 StringVar 变量,用于动态更新列表内容

selectbackground

选中项的背景色

selectforeground

选中项的文本色

selectborderwidth

选中项边框宽度

xscrollcommand

水平滚动回调,通常设为水平 Scrollbar 的 set 方法

yscrollcommand

垂直滚动回调,通常设为垂直 Scrollbar 的 set 方法

setgrid

是否启用网格调整大小(默认 False)

takefocus

是否可通过 Tab 键获取焦点(默认 True)

(2)Listbox组件常用方法

方法
说明

insert(index, *elements)

在指定位置插入一个或多个项目。

index=0 表示开头,index=END 表示末尾。

delete(first, last=None)

删除 first 到 last 范围内的项目。若省略 last,只删除 first。

get(first, last=None)

返回 first 到 last 范围内的项目元组。若省略 last,返回单个项目字符串。

curselection()

返回当前选中项目的索引元组(索引从 0 开始)。

size()

返回列表中的项目总数。

see(index)

滚动列表,确保 index 指定的项目可见。

activate(index)

将 index 项目设为活动状态(通常显示下划线)。

selection_set(first, last=None)

将 first 到 last 范围内的项目设为选中状态。

selection_clear(first, last=None)

取消 first 到 last 范围内项目的选中状态。

selection_includes(index)

判断 index 项目是否被选中,返回布尔值。

itemcget(index, option)

获取 index 项目的某个选项值(如背景色)。

itemconfig(index, **options)

设置 index 项目的一个或多个选项(如 bg, fg)。

import tkinter as tk #以别名tk导入tkinter库from tkinter import messageboxroot=tk.Tk()         #创建主窗口的实例winroot.title("Frame组件测试窗口") #设置窗口的标题root.geometry("400x200+600+200")#设置窗口的大小和位置root.resizable(True,False)      #设置窗口可水平缩放,禁止垂直缩放def show_selection():    """显示当前选中的项目"""    selected_indices = listbox.curselection()    if selected_indices:        # 获取选中项的文本        selected_text = listbox.get(selected_indices[0])        messagebox.showinfo("选中项", f"您选择了:{selected_text}")    else:        messagebox.showwarning("无选中", "请先选择一个项目")def add_item():    """向列表框末尾添加新项目"""    new_item = entry.get()    if new_item.strip():        listbox.insert(tk.END, new_item.strip())        entry.delete(0, tk.END)    else:        messagebox.showwarning("输入为空", "请输入要添加的项目内容")def delete_selected():    """删除选中的项目"""    selected = listbox.curselection()    if selected:        listbox.delete(selected[0])    else:        messagebox.showwarning("未选中", "请先选择要删除的项目")#创建列表框组件对象listbox=tk.Listbox(root,selectmode=tk.SINGLE,fg="green",bg="yellow",height=10,width=30,)listbox.pack(side=tk.LEFT,fill=tk.BOTH,expand=True)#在列表框中插入选项for item in ["苹果","香蕉","橙子","葡萄","西瓜"]:    listbox.insert(tk.END,item)  #列表方法#添加项目的输入框和按钮tk.Label(root,text="新项目:").pack(pady=(10, 0))entry=tk.Entry(root,width=15)entry.pack(pady=5)btn_add=tk.Button(root,text="添加",command=add_item)btn_add.pack(pady=5)#显示选中项的按钮btn_show=tk.Button(root,text="显示选中项",command=show_selection)btn_show.pack(pady=5)#删除选中项的按钮btn_delete=tk.Button(root,text="删除选中项",command=delete_selected)btn_delete.pack(pady=5)#退出按钮btn_exit=tk.Button(root,text="退出",command=root.destroy)btn_exit.pack(pady=20)tk.mainloop()  #进入事件处理循环,防止窗口闪退

最新文章

随机文章