📜  使用 Tkinter 创建多选

📅  最后修改于: 2022-05-13 01:55:41.512000             🧑  作者: Mango

使用 Tkinter 创建多选

先决条件: Python Tkinter – ListBox Widget,Python-tkinter 中的可滚动列表框

Tkinter 是一个易于阅读和理解的Python图形用户界面库。在 Tkinter 中,可以使用列表框小部件完成多项选择。通常,Listbox 以列表的形式显示不同的项目。列表框小部件提供列表中的一个或多个项目选择。列表框小部件中有许多选项可供用户选择多个选项。通过将选择模式选项指定为多个,用户可以选择多个选项。如果选择模式选项是单一的,那么用户只能选择一个选项。
列表框小部件的选择模式选项可以是单个、浏览、多个或扩展。

  • single – 选择一行文本。
  • 浏览- 这是一个默认选项,用户可以在其中选择一行文本。
  • 多个- 选择多行文本而不从选项的第一行拖动到最后一行。
  • 扩展- 用户可以选择并拖动相邻的多行文本。

句法 :

list_box = Listbox(root, options, ....)

示例 1: Python程序在列表框中显示有限的项目。

# Python program demonstrating
# Multiple selection in Listbox widget
  
  
from tkinter import * 
  
window = Tk()
window.geometry('100x150')
  
# Choosing selectmode as multiple 
# for selecting multiple options
list = Listbox(window, selectmode = "multiple")
  
# Widget expands horizontally and
# vertically by assigning both to 
# fill option
list.pack(expand = YES, fill = "both")
  
# Taking a list 'x' with the items 
# as languages
x = ["C", "C++", "Java", "Python", "R",
     "Go", "Ruby", "JavaScript", "Swift"]
  
for each_item in range(len(x)):
      
    list.insert(END, x[each_item])
      
    # coloring alternative lines of listbox
    list.itemconfig(each_item,
             bg = "yellow" if each_item % 2 == 0 else "cyan")
      
window.mainloop()

输出 :

从上面的多选列表框中,用户可以选择多个选项。由于列表框中符合规定大小的项目有限,因此用户可以看到所有项目。但是,如果有更多的项目要显示给用户,那么所有项目都不会在列表框中立即可见。因此,如果要在列表中显示更多项目,则需要将滚动条附加到列表框。这可以通过 Listbox 中的yscrollcommand选项(垂直滚动)来完成。

示例 2:显示带有附加滚动条的列表框的Python程序。

# Python program demonstrating Multiple selection
# in Listbox widget with a scrollbar
  
  
from tkinter import *
  
window = Tk()
window.title('Multiple selection')
  
# for scrolling vertically
yscrollbar = Scrollbar(window)
yscrollbar.pack(side = RIGHT, fill = Y)
  
label = Label(window,
              text = "Select the languages below :  ",
              font = ("Times New Roman", 10), 
              padx = 10, pady = 10)
label.pack()
list = Listbox(window, selectmode = "multiple", 
               yscrollcommand = yscrollbar.set)
  
# Widget expands horizontally and 
# vertically by assigning both to
# fill option
list.pack(padx = 10, pady = 10,
          expand = YES, fill = "both")
  
x =["C", "C++", "C#", "Java", "Python",
    "R", "Go", "Ruby", "JavaScript", "Swift",
    "SQL", "Perl", "XML"]
  
for each_item in range(len(x)):
      
    list.insert(END, x[each_item])
    list.itemconfig(each_item, bg = "lime")
  
# Attach listbox to vertical scrollbar
yscrollbar.config(command = list.yview)
window.mainloop()

输出 :