# 列表框,即 Listbox。在使用 Tkinter 进行 GUI 编程的过程中, # 如果需要用户自己进行选择时就可以使用列表框控件。列表框中的选项可以是多个条目, # 也可以是单个唯一条目,但常用于多个条目 import tkinter as tk # 创建主窗口 root = tk.Tk() root.title("Tkinter Listbox Example") # 创建 StringVar 变量 options = tk.StringVar(value="Option1 Option2 Option3 Option4 Option5 Option6 Option7 Option8 Option9 Option10") # 创建 Listbox 控件 listbox = tk.Listbox(root ,selectmode=tk.MULTIPLE # 设置为多选模式 ,width=10 ,height=10 ,font=("Arial", 12) ,activestyle=tk.UNDERLINE ,exportselection=False # 是否准许赋值选项 ,selectbackground='red' # 选中后的颜色 ,selectborderwidth=2 # 选中项的边框宽度 ,selectforeground='black' # 选中后的文本颜色 ,listvariable=options # 将 Listbox 的内容与 StringVar 变量绑定 ,setgrid=True # 启用网格控制 ,takefocus=True # 接受输入焦点 ) # #在这里options和listvariable=options 二选一就可以,两个一起用会冲突 # for i in range(1, 11): # listbox.insert(tk.END, f"Option {i}") # 创建水平滚动条 xscrollbar = tk.Scrollbar(root, orient=tk.HORIZONTAL) xscrollbar.pack(side=tk.BOTTOM, fill=tk.X) xscrollbar.config(command=listbox.xview) listbox.config(xscrollcommand=xscrollbar.set) # 创建垂直滚动条 yscrollbar = tk.Scrollbar(root) yscrollbar.pack(side=tk.RIGHT, fill=tk.Y) yscrollbar.config(command=listbox.yview) listbox.config(yscrollcommand=yscrollbar.set) # 定义一个函数来删除选中的选项 def delete_selected_items(): selected_indices = listbox.curselection() for index in reversed(selected_indices):#反向删除,直接删除前面会改变索引影响结果 listbox.delete(index) # 创建一个按钮来删除选中的选项 delete_button = tk.Button(root, text="Delete Selected Items", command=delete_selected_items) delete_button.pack(pady=10) # 将 Listbox 放置在窗口中 listbox.pack(padx=10, pady=10) # 运行主循环 root.mainloop() # master: # 类型: 父控件 # 描述: 指定 Listbox 的父控件。 # 示例: tkinter.Tk() 或 tkinter.Frame()。 # selectmode: # 类型: 字符串 # 描述: 设置选择模式。 # 取值: # EXTENDED: 多项选择(默认)。 # SINGLE: 单项选择。 # BROWSE: 单项选择,只能通过鼠标选择。 # MULTIPLE: 多项选择,使用 Ctrl 键进行多选。 # 示例: selectmode=tk.EXTENDED。 # width: # 类型: 整数 # 描述: 设置 Listbox 显示的宽度(以字符数计)。 # 示例: width=30。 # height: # 类型: 整数 # 描述: 设置 Listbox 显示的高度(以行数计)。 # 示例: height=10。 # font: # 类型: 字体设置 # 描述: 设置 Listbox 内文本的字体。 # 示例: font=("Arial", 12)。 # activestyle: # 类型: 字符串 # 描述: 设置激活条目(即当前选中的条目)的样式。 # 取值: # none: 不改变样式。 # underline: 下划线。 # overstrike: 划掉线。 # 示例: activestyle=tk.UNDERLINE。 # exportselection: # 类型: 布尔值 # 描述: 设置是否允许通过 CLIPBOARD 机制复制所选项。 # 示例: exportselection=False。 # listvariable: # 类型: 变量 # 描述: 将 Listbox 的内容与一个 Tkinter 变量绑定。 # 示例: listvariable=tk.StringVar(value=["Option 1", "Option 2"])。 # selectbackground: # 类型: 颜色 # 描述: 设置选中项的背景颜色。 # 示例: selectbackground="blue"。 # selectforeground: # 类型: 颜色 # 描述: 设置选中项的前景颜色(文字颜色)。 # 示例: selectforeground="white"。 # selectborderwidth 1. 指定当某个项目被选中的时候边框的宽度 # 2. 默认是由 selectbackground 指定的颜色填充,没有边框 # 3. 如果设置了此选项,Listbox 的每一项会相应变大,被选中项为 “raised” 样式 # selectforeground 1. 指定当某个项目被选中的时候文本颜色,默认值由系统指定 #takefocus 属性用于指定该组件是否接受输入焦点。 # 当设置为 True 时,控件可以接收焦点,用户可以通过 Tab 键将焦点转移到该控件上。 # 当控件拥有焦点时,用户可以使用键盘与控件进行交互,例如在文本框中输入文本或使用方向键在控件之间移动 # 如果控件不能接收焦点,那么用户将无法使用键盘对该控件进行交互,例如在文本框中输入文本或使用方向键在控件之间移动。 # xscrollcommand 为 Listbox 组件添加一条水平滚动条,将此选项与 Scrollbar 组件相关联即可 # yscrollcommand 为 Listbox 组件添加一条垂直滚动条,将此选项与 Scrollbar 组件相关联即可 #在 Listbox 控件中删除一个或多个选项,您可以使用 delete 方法。delete 方法允许您指定要删除的选项的索引或索引范围