【tkinter系列 第八课 Listbox窗口部件 】

  • 2020 年 3 月 11 日
  • 筆記

前言

python中通常我们写程序,显示结果和操作都是在终端区,如果要想实现一个有显示界面的程序那该怎样实现呢?python中有好几个库都可以实现,这个系列我们一起来学习如何使用python自带的tkinter库来实现。

本节课将要学习Listbox窗口部件,Listbox是列表框的意思,那什么时候该用Listbox部件呢?列表框用于从一组文本项中进行选择。根据列表框的配置方式,用户可以从列表中选择一个或多个项。

创建一个列表框

代码:

from tkinter import *import tkinter.messagebox#创建一个主窗口root = Tk()# 创建 宽400高250的窗口 x是小写的英文字符root.geometry('400x250')  # 创建一个列表框listbox = Listbox(root)listbox.pack()  # 程序一直循环,直到我们关闭窗口root.mainloop()

列表框的基础操作

插入值

第一次创建列表框时,它是空的。首先要做的通常是插入一行或多行文本。Insert 方法接受要插入的索引和字符串。

代码:

from tkinter import *import tkinter.messagebox#创建一个主窗口root = Tk()# 创建 宽400高250的窗口 x是小写的英文字符root.geometry('400x250')  # 创建一个列表框listbox = Listbox(root)listbox.pack()  # 插入值listbox.insert(END, "a list entry")for item in ["one", "two", "three", "four"]:    listbox.insert(END, item)  # 程序一直循环,直到我们关闭窗口root.mainloop()

效果:

删除值

删除使用delete(first,last)方法 代码:

from tkinter import *import tkinter.messagebox#创建一个主窗口root = Tk()# 创建 宽400高250的窗口 x是小写的英文字符root.geometry('400x250')  # 创建一个列表框listbox = Listbox(root)listbox.pack()  # 插入值listbox.insert(END, "a list entry")for item in ["one", "two", "three", "four"]:    listbox.insert(END, item)  # 删除值listbox.delete(0,2)# 将列表的前3个元素删除  # 程序一直循环,直到我们关闭窗口root.mainloop()

效果:

查看选中结果

使用curselection()方法可以查看当前列表框选中的结果。

代码:

from tkinter import *import tkinter.messagebox#创建一个主窗口root = Tk()# 创建 宽400高250的窗口 x是小写的英文字符root.geometry('400x250')  def print_choice():    print(listbox.curselection())  # 创建一个列表框listbox = Listbox(root)listbox.pack()  # 插入值listbox.insert(END, "a list entry")for item in ["one", "two", "three", "four"]:    listbox.insert(END, item)  # 删除值listbox.delete(0,2)# 将列表的前3个元素删除  Button(root, text="确定", command=print_choice).pack()# 程序一直循环,直到我们关闭窗口root.mainloop()

多选

列表框通过 selectmode 选项提供了四种不同的选择模式。它们是 SINGLE (只有一个选项)、 BROWSE (相同,但是可以用鼠标移动选项)、 MULTIPLE (可以选择多个项目,一次点击一个)或 EXTENDED (可以选择多个范围的项目,使用 Shift 和 Control 键盘修饰符)。默认是 BROWSE。使用 MULTIPLE 来获得“检查表”行为,当用户通常只选择一个项目,但有时希望选择一个或多个项目范围时使用 EXTENDED。

代码:

from tkinter import *import tkinter.messagebox#创建一个主窗口root = Tk()# 创建 宽400高250的窗口 x是小写的英文字符root.geometry('400x250')  def print_choice():    print(listbox.curselection())  # 创建一个列表框listbox = Listbox(root, selectmode=EXTENDED)listbox.pack()  # 插入值listbox.insert(END, "a list entry")for item in ["one", "two", "three", "four"]:    listbox.insert(END, item)  # 删除值# listbox.delete(0,2)# 将列表的前3个元素删除  Button(root, text="确定", command=print_choice).pack()# 程序一直循环,直到我们关闭窗口root.mainloop()

效果:

参考:http://effbot.org/tkinterbook/listbox.html