前言
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