返回顶部
首页 > 资讯 > 后端开发 > Python >tkinter -- Listbox
  • 644
分享到

tkinter -- Listbox

tkinterListbox 2023-01-30 22:01:38 644人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

Listbox 为列表框控件,它可以包含一个或多个文本项(text item),可以设置为单选或多选创建一个 Listbox,向其中添加三个 item示例:import tkinter as tk root&

Listbox 为列表框控件,它可以包含一个或多个文本项(text item),可以设置为单选或多选

创建一个 Listbox,向其中添加三个 item

示例:

import tkinter as tk

root = tk.Tk()
lb = tk.Listbox(root)
for item in ['py3study', 'python', 'tkinter']:
    lb.insert(tk.END, item)
lb.pack()
root.mainloop()

效果:

blob.png



创建一个可以多选的 Listbox,使用属性 selectmaod

代码:

import tkinter as tk

root = tk.Tk()
lb = tk.Listbox(root, selectmode=tk.MULTIPLE)
for item in ['py3study', 'Python', 'tkinter']:
    lb.insert(tk.END, item)
lb.pack()
root.mainloop()

效果:

blob.png

依次点击这三个 item,均显示为选中状态。属性 MULTIPLE 允许多选,每次点击 item,它将改变自己的当前选状态,与 Checkbox 有点相似



这个属性 selectmode 还可以设置为 BROWSE,可以通过鼠标来移动 Listbox 中的选中位置(不是移动 item),这个属性也是 Listbox 在默认设置的值,这个程序与1.程序运行的结果的一样的

示例:

import tkinter as tk

root = tk.Tk()
lb = tk.Listbox(root, selectmode=tk.BROWSE)
for item in ['py3study', 'python', 'tkinter']:
    lb.insert(tk.END, item)
lb.pack()
root.mainloop()

效果:

blob.png

使用鼠标进行拖动,可以看到选中的位置随之变化。与 BROWSE 相似 的为 SINGLE,但不支持鼠标移动选中位置




使用 selectmode = EXPANDED 使用 Listbox 来支持 Shift 和 Control

运行程序,点中“python",shift + 点击"tkinter",会选中所有的 item

运行程序,点中"python",control + 点击"py3study",会选中 python 和 py3study,第二项tkinter 处于非选中状态

示例:

import tkinter as tk

root = tk.Tk()
lb = tk.Listbox(root, selectmode=tk.EXTENDED)
for item in ['py3study', 'python', 'tkinter']:
    lb.insert(tk.END, item)
lb.pack()
root.mainloop()

效果:

blob.png



向 Listbox 中添加一个 item

以上的例子均使用了 insert 来向 Listbox 中添加 一个 item,这个函数有两个属性一个为添加的索引值,另一个为添加的项(item)

有两个特殊的值 ACTIVE 和 END,ACTIVE 是向当前选中的 item 前插入一个(即使用当前选中的索引作为插入位置);END 是向Listbox 的最后一项添加插入一项先向 Listbox 中追加三个 item,再在 Listbox 开始添加三项

示例:

import tkinter as tk

root = tk.Tk()
lb = tk.Listbox(root)
for item in ['py3study', 'python', 'tkinter']:
    lb.insert(tk.END, item)
# 只添加一项将[]作为一个 item
lb.insert(0, ['linux', 'windows', 'unix'])
# 添加三项,每个 string 为一个 item
lb.insert(0, 'linux', 'windows', 'unix')

lb.pack()
root.mainloop()

效果:

blob.png



删除 Listbox 中的项,使用 delete,这个函数也有两个参数,第一个为开始的索引值;第二个为结束的索引值,如果不指定则只删除第一个索引项

示例:

import tkinter as tk

root = tk.Tk()
lb = tk.Listbox(root)
for i in range(10):
    lb.insert(tk.END, str(i))
lb.delete(1, 3)


lb.pack()
root.mainloop()
#lb.delete(0,END) #删除全部内容

效果:

blob.png

运行程序,只有1-3被删除

删除全部内容,使用 delete 指定第一个索引值0和最后一个参数 END,即可



选中操作函数,使用函数实现。selection_set 函数有两个参数第一个为开始的索引;第二个为结束的索引,如果不指定则只选中第一个参数指定的索引项

示例:

import tkinter as tk

root = tk.Tk()
lb = tk.Listbox(root)
for i in range(10):
    lb.insert(tk.END, str(i))

lb.selection_set(0, 10)
lb.pack()

root.mainloop()

效果:

blob.png

程序运行结果,选中了所有的项。 此代码并未指定 Listbox 为 MULTIPLE 或 EXTENDED,查通过 selection_set 仍旧可以对 Listbox进行操作



与之相对的便是取消选中的函数了,参数与 selection_set 在参数相同,如下代码取消索引从0-3在状态

示例:

import tkinter as tk
root = tk.Tk()
lb = tk.Listbox(root)
for i in range(10):
    lb.insert(tk.END, str(i))

lb.selection_set(0, 10)
lb.selection_clear(0,3)
lb.pack()

root.mainloop()

效果:

blob.png



得到当前 Listbox 中的 item 个数

示例:

import tkinter as tk
root = tk.Tk()
lb = tk.Listbox(root)
for i in range(10):
    lb.insert(tk.END, str(i))
lb.delete(3)
print(lb.size())
lb.pack()
root.mainloop()

效果:

blob.png

首先向 Listbox 中添加 了10个 item,然后删除索引为3在 item,最后的打印结果为9,即当前的 Listbox 中只有9项



返回指定索引的项

示例:

import tkinter as tk
root = tk.Tk()
lb = tk.Listbox(root)
for i in range(10):
    lb.insert(tk.END, str(i*100))

print(lb.get(3))
lb.pack()
root.mainloop()

效果:

blob.png


get 也为两个参数的函数,可以返回多个项(item),如下返回索引值3-7的值

示例:

import tkinter as tk
root = tk.Tk()
lb = tk.Listbox(root)
for i in range(10):
    lb.insert(tk.END, str(i*100))

print(lb.get(3, 7))
lb.pack()
root.mainloop()

效果:

blob.png

返回值为('300', '400', '500', '600', '700'),是一个 tuple 类型



返回当前返回的项的索引,不是 item 的值

示例:

import tkinter as tk
root = tk.Tk()
lb = tk.Listbox(root)
for i in range(10):
    lb.insert(tk.END, str(i*100))

lb.selection_set(3, 8)
print(lb.curselection())
lb.pack()
root.mainloop()

效果:

blob.png

返 回 值 为 ('3', '4', '5', '6', '7', '8') , 而 不 是('300','400','500','600','700','800'),知道了索引,得到值,就很容易了:lb.get()就可以实现



判断 一个项是否被选中,使用索引

示例:

import tkinter as tk
root = tk.Tk()
lb = tk.Listbox(root)
for i in range(10):
    lb.insert(tk.END, str(i*100))

lb.selection_set(3, 8)
print(lb.selection_includes(8))
print(lb.selection_includes(0))
lb.pack()
root.mainloop()

效果:

blob.png

返回结果:True Flase,即8包含在选中的索引中,0不包含在选中的索引中



Listbox 与变量绑定

示例:

import tkinter as tk
root = tk.Tk()
v = tk.StringVar()
lb = tk.Listbox(root, listvariable=v)
for i in range(10):
    lb.insert(tk.END, str(i*100))
# 打印当前列表中的项值
print(v.get())
# 输出:('0', '100', '200', '300', '400', '500', '600', '700', '800', '900')

# 改变v的值,使用tuple可以与item对应
v.set(('1000', '200'))
# 结果只有两项了1000和200
lb.pack()
root.mainloop()

效果:

blob.png




Listbox 与事件绑定

它不支持 command 属性来设置回调函数了,使用 bind 来指定回调函数,打印当前选中的值

示例:

import tkinter as tk

root = tk.Tk()
def printlist(event):
    print(lb.get(lb.curselection()))

lb = tk.Listbox(root)

lb.bind('<Double-Button-1>', printlist)
for i in range(10):
    lb.insert(tk.END, str(i*100))
lb.pack()
root.mainloop()

效果:

444.gif


还有一个比较实用的功能没有介绍:滚动条的添加,留到后面介绍 Scrollbar 的时候再一并介绍



--结束END--

本文标题: tkinter -- Listbox

本文链接: https://lsjlt.com/news/179107.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • tkinter -- Listbox
    Listbox 为列表框控件,它可以包含一个或多个文本项(text item),可以设置为单选或多选创建一个 Listbox,向其中添加三个 item示例:import tkinter as tk root&...
    99+
    2023-01-30
    tkinter Listbox
  • Python tkinter 列表框Listbox属性详情
    目录1 属性1.1 activestyle1.2 background(bg)1.3 borderwidth(bd)1.4 cursor1.5 disabledforeground1...
    99+
    2024-04-02
  • Python中Tkinter组件Listbox的具体使用
    目录何时使用 Listbox 组件?用法参数方法Listbox(列表框)组件用于显示一个选择列表。Listbox 只能包含文本项目,并且所有的项目都需要使用相同的字体和颜色。根据组件...
    99+
    2024-04-02
  • Python之tkinter列表框Listbox与滚动条Scrollbar解读
    目录列表框Listbox简介Listbox 的初步应用建立列表框项目 insert()Listbox的基本操作列出列表框的选项数量 size()选取特定索引项 selection_s...
    99+
    2023-05-19
    Python tkinter列表框Listbox Python滚动条Scrollbar tkinter Listbox与滚动条Scrollbar
  • Excel VBA-遍历ListBox控件
    遍历ListBox控件可以使用For循环来实现。下面是一个示例代码:```vbaDim i As IntegerDim ListBo...
    99+
    2023-09-26
    VBA
  • C# listBox中如何获取项
    这篇文章主要为大家展示了“C# listBox中如何获取项”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“C# listBox中如何获取项”这篇文章吧。获取所有项的方法:for (int...
    99+
    2023-06-17
  • vba中ListBox控件的使用
    在VBA中,ListBox控件是一种用于显示和选择列表项的常见控件。以下是ListBox控件的常见用法:1. 添加列表项:可以使用`...
    99+
    2023-09-12
    vba
  • tkinter -- CheckButton
    Checkbutton 又称为多选按钮可以表示两种状态:On 和 Off,可以设置回调函数,每当点击此按钮时回调函数被调用一个简单的Checkbutton例子:示例:import tkinter as tk r...
    99+
    2023-01-30
    tkinter CheckButton
  • tkinter -- button1
    Button 功能触发事件一个简单的button应用示例:import tkinter as tk # 定义button的回调函数 def py3study():   ...
    99+
    2023-01-30
    tkinter
  • tkinter -- Entry
    Entry 用来输入单行文本示例:import tkinter as tk root = tk.Tk() tk.Entry(root, text='input &...
    99+
    2023-01-30
    tkinter Entry
  • tkinter -- RadioButton
    Radiobutton 为单选按钮,即在同一组内只能有一个按钮被选中,每当选中组内的一个按钮时,其它的按钮自动改为非选中态,与其他控件不同的是:它有组的概念不指定绑定变量,每个Radiobutton自成一组创建一个简单的Radiobutto...
    99+
    2023-01-30
    tkinter RadioButton
  • tkinter -- button2
    指定button的宽度和高度width:  宽度height: 高度使用三种方式:1 创建button对象时,指定宽度与高度2 使用属性width和height来指定宽度和高度3 使用configure方法来指定宽度与高度示例:i...
    99+
    2023-01-30
    tkinter
  • tkinter -- Scale
    Scale 为输出限定范围的数字区间,可以为之指定最大值,最小值及步距值创建一个Scale代码:import tkinter as tk root = tk.Tk() tk.Scale(ro...
    99+
    2023-01-30
    tkinter Scale
  • tkinter -- Scrollbar
    Scrollbar(滚动条),可以单独使用,但最多的还是与其它控件(Listbox,Text,Canva 等)结合使用创建一个Scrollbar代码:import tkinter as tk root&nbs...
    99+
    2023-01-30
    tkinter Scrollbar
  • tkinter -- Frame
    Frame 就是屏幕上的一块矩形区域,多是用来作为容器(container)来布局窗体创建Frame代码:import tkinter as tk root = tk.Tk() #&nbs...
    99+
    2023-01-30
    tkinter Frame
  • tkinter -- PanedWindow
    PaneWindow(面板)为一 gm,用来管理子 Widget向 PanedWindow 中添加 Pane代码:import tkinter as tk # 使用add方法 root =...
    99+
    2023-01-30
    tkinter PanedWindow
  • tkinter -- Message
    Message 也是用来显示文本的,用法与 Label 基本一样创建一个简单的 Message代码:import tkinter as tk root = tk.Tk() tk.Messag...
    99+
    2023-01-30
    tkinter Message
  • tkinter -- OptionMenu
    OptionMenu 为可选菜单,与 Combox 功能类似创建 OptionMenu代码:import tkinter as tk root = tk.Tk() v =&nbs...
    99+
    2023-01-30
    tkinter OptionMenu
  • tkinter -- Toplevel
    TopLevel 与 Frame 类似,但它包含窗体属性(如 Title)创建简单的Toplevel代码:import tkinter as tk root = tk.Tk() t1&nbs...
    99+
    2023-01-30
    tkinter Toplevel
  • tkinter -- Menu
    Tkinter 之 Menu ,菜单代码:import tkinter as tk root = tk.Tk() def hello():    &...
    99+
    2023-01-30
    tkinter Menu
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作