Python Tkinter Listbox使用指南

Python Tkinter Listbox使用指南在Tkinter中,使用Listbox展示数据非常简单,我们可以通过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()

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/22853.html

(0)
上一篇 2023-12-23
下一篇 2023-12-23

相关推荐

  • mycat读写分离方案一

    mycat读写分离方案一1.什么是MYCAT 一个彻底开源的,面向企业应用开发的大数据库集群 支持事务、ACID、可以替代MySQL的加强版数据库 一个可以视为MySQL集群的企业级数据库,用来替代昂贵的Oracle集群 …

    2023-02-17
    120
  • 关于python爬取bilibili历史记录的信息

    关于python爬取bilibili历史记录的信息爬虫没有 ip 池的话单线程都唯恐其过快,你 ip 池都没有就开多线程,这不好吧!别搞得自己的 ip 被封到时候连访问这个网页都有困难就麻烦了。你上面代码有加锁吗?大概得用 queue 吧。

    2023-12-03
    110
  • Python编程:str与int互换

    Python编程:str与int互换在Python编程中,str和int的类型转换是一种非常基础的操作。str是代表字符串类型,而int则是代表整型类型。它们之间的互换可以帮助我们在编程过程中更加灵活地操作数据。

    2024-07-19
    15
  • SQL SERVER 下,批量在不同的数据库中执行相同的脚本「建议收藏」

    SQL SERVER 下,批量在不同的数据库中执行相同的脚本「建议收藏」
    转自:https://blog.51cto.com/liuxinya/354983 作为DBA我们经常需要对不同的数据库执行相同的查询,如果你的服务器上只有…

    2023-04-05
    123
  • Python字典转字符串,精简操作代码

    Python字典转字符串,精简操作代码在Python开发中,常常需要将字典类型的数据转换为字符串类型。文字类型的数据可用于数据存储、网络传输、数据展示等多种场景。Python提供了多种方法进行字典转字符串,但是通常需要进行一些额外处理,使过程变得繁琐。本篇文章将介绍一种精简、高效的Python字典转字符串的方法,省去多余操作。

    2023-12-14
    82
  • Win10安装Python教程

    Win10安装Python教程Python是一种高级编程语言,简单易学,同时又非常强大,目前被广泛应用于Web开发、数据科学、人工智能等领域。本文所要介绍的是如何在Win10系统上安装Python。

    2024-05-14
    45
  • MySQL密码加密与解密[亲测有效]

    MySQL密码加密与解密[亲测有效]MySQL加密和解密实例详解 有多种前端加密算法可用于数据加密、解密,这是一种简单的数据库级别的数据加密、解密解决方案。 以MySQL数据库为例,它内建了相应的加密函数(AES_ENCRYPT() )

    2023-02-15
    124
  • SQL Server等待事件—PAGEIOLATCH_EX[通俗易懂]

    SQL Server等待事件—PAGEIOLATCH_EX[通俗易懂]什么是PAGEIOLATCH_EX等待事件? 下面我们将对PAGEIOLATCH_EX等待事件的相关资料做一个简单的归纳、整理。关于PAGEIOLATCH_EX,官方文档的简单介绍如下: PAGEIO

    2023-01-27
    118

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注