Python Tkinter Listbox使用指南

一、给Listbox赋值

在Tkinter中,使用Listbox展示数据非常简单,我们可以通过Listbox类创建一个可以显示列表项的控件。

from tkinter import *
root = Tk()
listbox = Listbox(root,width=50)
for item in ['apple','banana','watermelon']:
    listbox.insert(END,item)
listbox.pack()
root.mainloop()

首先创建一个可以容纳Listbox的窗口对象,然后通过Listbox类创建一个Listbox控件;接着,通过循环遍历一组数据,将数据插入到Listbox框中,最后调用pack方法将框中的数据显示,这个时候,一个简单的列表就创建完成了。

二、交互功能:选择、删除列表项

当展示数据已经不再是我们的目标,我们还需要与这些数据进行交互操作,比如选择、删除等等。在Tkinter中,我们可以轻松的完成这些操作。

要选择列表中的一项,只需要在创建时设置好该控件的selectmode选项即可。该属性有四个参数:

  • SINGLE:表示只能选中一个选项。
  • BROWSE:和SINGLE一样,都只能选中一个选项,但是通过鼠标拖动某个选项时,可以更改选中的项。
  • MULTIPLE:表示可以选中多个选项,但是不能用鼠标拖动来多选。
  • EXTENDED:表示可以多选,而且可以用鼠标拖动来选中多个选项。

对于删除,可以定义一个函数来实现。在该函数内部,我们先获取选择的项,然后删除。

def delete_item(self):
    try:
        current_item = self.listbox.curselection()
        self.listbox.delete(current_item)
    except EXCEPTION as e:
        pass

在上述代码中,使用curselection()方法获取当前选择的项,如果有选择的项,则调用delete()方法删除该项,并在异常处理时忽略之。

三、交互功能:更新列表项

修改列表项和删除列表项实现起来相差不大,在此就不赘述,相比之下,更新列表项可能让人有些头疼。但我们可以使用curselection()方法在列表中查找到相应的位置,调用insert()方法插入即可。

def update_item(self):
    try:
        current_item = self.listbox.curselection()
        self.listbox.insert(current_item, self.entry.get())
        self.listbox.delete(current_item)
    except EXCEPTION as e:
        pass

以上代码中,使用curselection()方法获取当前选择的项,接着通过insert()方法在该选项之前插入一个新的元素,并调用delete()方法删除原来的选择。

四、完整例子

以下是一个完整的例子,来完整地展示Listbox的可交互功能,包括选择、删除和更新功能:

from tkinter import *

class ListBoxDemo():
    def __init__(self):
        self.root = Tk()
        self.listbox = Listbox(self.root, selectmode=SINGLE)
        self.listbox.bind("",self.update_item) 
        self.listbox.pack(padx=10,pady=10)
        self.items = ['apple','banana','watermelon']
        self.insert_items_to_listbox()
        self.create_button()
        self.create_entry()
        self.root.mainloop()

    def insert_items_to_listbox(self):
        for item in self.items:
            self.listbox.insert(END,item)

    def create_button(self):
        entry_frame = Frame(self.root)
        delete_button = Button(entry_frame,text='Delete',command=self.delete_item)
        delete_button.pack(side=LEFT,padx=10)
        update_button = Button(entry_frame,text='Update',command=self.update_item)
        update_button.pack(side=LEFT)
        entry_frame.pack(side=TOP)

    def create_entry(self):
        self.entry = Entry(self.root,width=50)
        self.entry.pack(pady=10)

    def delete_item(self):
        try:
            current_item = self.listbox.curselection()
            self.listbox.delete(current_item)
        except EXCEPTION as e:
            pass

    def update_item(self,event):
        try:
            current_item = self.listbox.curselection()
            item_text = self.listbox.get(current_item)
            self.entry.insert(END,item_text)
            self.listbox.delete(current_item)
        except EXCEPTION as e:
            pass

app=ListBoxDemo()

原创文章,作者:PDYV,如若转载,请注明出处:https://www.506064.com/n/144885.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
PDYVPDYV
上一篇 2024-10-26 11:53
下一篇 2024-10-26 11:53

相关推荐

  • Python中引入上一级目录中函数

    Python中经常需要调用其他文件夹中的模块或函数,其中一个常见的操作是引入上一级目录中的函数。在此,我们将从多个角度详细解释如何在Python中引入上一级目录的函数。 一、加入环…

    编程 2025-04-29
  • 如何查看Anaconda中Python路径

    对Anaconda中Python路径即conda环境的查看进行详细的阐述。 一、使用命令行查看 1、在Windows系统中,可以使用命令提示符(cmd)或者Anaconda Pro…

    编程 2025-04-29
  • Python周杰伦代码用法介绍

    本文将从多个方面对Python周杰伦代码进行详细的阐述。 一、代码介绍 from urllib.request import urlopen from bs4 import Bea…

    编程 2025-04-29
  • Python计算阳历日期对应周几

    本文介绍如何通过Python计算任意阳历日期对应周几。 一、获取日期 获取日期可以通过Python内置的模块datetime实现,示例代码如下: from datetime imp…

    编程 2025-04-29
  • Python列表中负数的个数

    Python列表是一个有序的集合,可以存储多个不同类型的元素。而负数是指小于0的整数。在Python列表中,我们想要找到负数的个数,可以通过以下几个方面进行实现。 一、使用循环遍历…

    编程 2025-04-29
  • Python程序需要编译才能执行

    Python 被广泛应用于数据分析、人工智能、科学计算等领域,它的灵活性和简单易学的性质使得越来越多的人喜欢使用 Python 进行编程。然而,在 Python 中程序执行的方式不…

    编程 2025-04-29
  • 蝴蝶优化算法Python版

    蝴蝶优化算法是一种基于仿生学的优化算法,模仿自然界中的蝴蝶进行搜索。它可以应用于多个领域的优化问题,包括数学优化、工程问题、机器学习等。本文将从多个方面对蝴蝶优化算法Python版…

    编程 2025-04-29
  • python强行终止程序快捷键

    本文将从多个方面对python强行终止程序快捷键进行详细阐述,并提供相应代码示例。 一、Ctrl+C快捷键 Ctrl+C快捷键是在终端中经常用来强行终止运行的程序。当你在终端中运行…

    编程 2025-04-29
  • Python清华镜像下载

    Python清华镜像是一个高质量的Python开发资源镜像站,提供了Python及其相关的开发工具、框架和文档的下载服务。本文将从以下几个方面对Python清华镜像下载进行详细的阐…

    编程 2025-04-29
  • Python字典去重复工具

    使用Python语言编写字典去重复工具,可帮助用户快速去重复。 一、字典去重复工具的需求 在使用Python编写程序时,我们经常需要处理数据文件,其中包含了大量的重复数据。为了方便…

    编程 2025-04-29

发表回复

登录后才能评论