列表框,即 Listbox

# 列表框,即 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 方法允许您指定要删除的选项的索引或索引范围

你可能感兴趣的:(python)