Python中tkinter控件中的Listbox控件详解
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python中tkinter控件中的Listbox控件详解相关的知识,希望对你有一定的参考价值。
参考技术A import tkinterwin=tkinter.Tk()
win.title('第一个窗口')
win.geometry()
'''
Listbox 列表框控件:可以包含一个或者多个文本框
作业:在listbox控件的小窗口显示一个字符串
'''
#一:【支持鼠标移动选中位置】使用selectmode=tkinter.BROWSE,创建一个listbox,添加几个元素
'''
lb=tkinter.Listbox(win,selectmode=tkinter.BROWSE)
lb.pack()
for item in ['good','nice','beautiful']:
#1:添加
#按顺序添加(向后添加)
lb.insert(tkinter.END,item)
#在开始添加(往前添加)
lb.insert(tkinter.ACTIVE,'cool')
#将列表当成一个元素添加
#lb.insert(tkinter.END,['cool','sunk'])
'''
#2:删除【索引从0开始数】(删除开始索引到结束索引的所有元素),参数1为开始索引,参数2为结束索引,如果不指定参数2,只删除第一个索引的内容
#lb.delete(1)
#3:选中【索引从0开始数】(选中开始索引到结束索引的所有元素),参数1为开始索引,参数2为结束索引,如果不指定参数2,只选中第一个索引的内容
#lb.select_set(2)
#lb.select_set(2,4)
#4:取消选中【索引从0开始数】(取消选中开始索引到结束索引的所有元素),参数1为开始索引,参数2为结束索引,如果不指定参数2,只取消选中第一个索引的内容
#lb.select_clear(2)
#5:获取到列表中的元素个数
#print(lb.size())
#6:从列表中取值【索引从0开始数】(获取选中开始索引到结束索引的所有元素的值(tuple)),参数1为开始索引,参数2为结束索引,如果不指定参数2,只获取第一个索引的内容
#print(lb.get(1,2))
#7:返回当前选中的索引项(得到索引),不是的到内容
#print(lb.curselection())
#8:判断 一个选项是否被选中,返回布尔类型 用索引表示
#print(lb.select_includes(1))
#9:绑定变量
#lbv=tkinter.StringVar()
# 9.1 打印当前列表中的所有选项(tuple)
#print(lbv.get())
# 9.2 设置选项(tuple)
#lbv.set(('1','2'))
#10:绑定事件(需要一个参数,但是不要传)
'''
def myPrint(event):
print(lb.get(lb.curselection()))
lb.bind('<Double-Button-1>',myPrint)
#11:滚动条
sc=tkinter.Scrollbar(win)
sc.pack(side=tkinter.RIGHT,fill=tkinter.Y)
lb.pack(side=tkinter.LEFT,fill=tkinter.BOTH)
#关联
lb.configure(yscrollcommand=sc.set) (config方法也可以)
sc['command']=lb.yview #额外给属性赋值,相当于 sc.configure(command=text.yview)
'''
'''#二:【不支持鼠标移动选中位置,支持鼠标按下后选中位置】使用selectmode=tkinter.SINGLE,创建一个listbox,添加几个元素,与(一)相似
lb=tkinter.Listbox(win,selectmode=tkinter.SINGLE,listvariable=lbv)
lb.pack()
for item in ['good','nice','beautiful']:
lb.insert(tkinter.END,item)
'''
#三:【在一的功能上,可以使listbox支持shift和control(实现连选与多选)】使用selectmode=tkinter.EXTENDED
'''
lb=tkinter.Listbox(win,selectmode=tkinter.EXTENDED)
for item in ['good','nice','beautiful','good1','nice1','beautiful1','good2','nice2','beautiful2','good3','nice3','beautiful3']:
lb.insert(tkinter.END,item)
sc=tkinter.Scrollbar(win)
sc.pack(side=tkinter.RIGHT,fill=tkinter.Y)
lb.configure(yscrollcommand=sc.set)
lb.pack(side=tkinter.LEFT,fill=tkinter.BOTH)
sc['command']=lb.yview
'''
#四:【在二的功能上,支持多选】使用selectmode=tkinter.MULTIPLE
lb=tkinter.Listbox(win,selectmode=tkinter.MULTIPLE)
for item in ['good','nice','beautiful','good1','nice1','beautiful1','good2','nice2','beautiful2','good3','nice3','beautiful3']:
lb.insert(tkinter.END,item)
lb.pack()
win.mainloop()
如何清除 Tkinter ListBox Python
【中文标题】如何清除 Tkinter ListBox Python【英文标题】:How to clear Tkinter ListBox Python 【发布时间】:2018-07-27 18:36:39 【问题描述】:如何在单击按钮重新填充列表框时清除它?下面的代码给了我一个错误。
代码:
self.listNodes.delete(0,END)
错误:
NameError: name 'END' is not defined
【问题讨论】:
请提供minimal reproducible example。上面的代码不足以重现错误。 【参考方案1】:根据您导入 tkinter 的方式,您可能需要用引号括起来 试试:
self.listNodes.delete(0,'end')
你也可以使用:
self.listNodes.delete(0,tk.END)
【讨论】:
括号?我认为您的意思是“引号”。【参考方案2】:替换:
self.listNodes.delete(0,END)
与:
self.listNodes.delete('0','end')
END
是tkinter 模块的变量,这表明应该使用通配符(from tkinter import *
) 导入或from tkinter import END
。
【讨论】:
【参考方案3】:您可以使用这是您将 tkinter 导入为:
import tkinter as tk
self.listnodes.delete(0, tk.END)
或者你可以这样做:
from tkinter import *
self.listnodes.delete(0, END)
【讨论】:
【参考方案4】:破坏是删除某些东西的最佳方式。
self.listNode.destroy()
然后将您的数据再次添加到您的ListBox
。
【讨论】:
【参考方案5】:你可以像这样 Distroy 列表节点
from tkinter import *
self.listnodes.delete(0, END) *
【讨论】:
您可以只编辑以前的答案以包含此内容,而不是仅针对一行代码发布新答案。以上是关于Python中tkinter控件中的Listbox控件详解的主要内容,如果未能解决你的问题,请参考以下文章