鱼C论坛

 找回密码
 立即注册
查看: 2353|回复: 2

[已解决]tkinter中的listbox组件如果使用多选如何一次传递选中的多个数据

[复制链接]
发表于 2023-8-1 13:34:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
tkinter中的listbox组件如果使用多选如何一次传递选中的多个数据?求大神解答

self.button1 = tk.Button(labelframe1,text='搜索',command=self.get_word).grid(column=2,row=0)
self.listbox1 = tk.Listbox(labelframe2,width=40,selectmode=tk.MULTIPLE,yscrollcommand=self.scbar.set)
self.listbox1.pack()




def get_word(self):
        self.theword = self.entry1.get()
        self.use_thetitle()

def use_thetitle(self):
        self.title = self.listbox1.get(tk.ACTIVE)
        self.title_list.append(self.title)
        print(self.title_list)
最佳答案
2023-8-1 13:34:45
在tkinter中,如果使用多选的listbox组件,可以通过 curselection() 方法来获取选中的多个数据。 curselection() 方法返回一个包含选中项索引的元组,然后可以使用这些索引来获取对应的值。下面是修改后的代码:

  1. import tkinter as tk

  2. class YourClassName:
  3.     def __init__(self):
  4.         # 其他初始化代码
  5.         self.button1 = tk.Button(labelframe1, text='搜索', command=self.get_word).grid(column=2, row=0)
  6.         self.listbox1 = tk.Listbox(labelframe2, width=40, selectmode=tk.MULTIPLE, yscrollcommand=self.scbar.set)
  7.         self.listbox1.pack()

  8.     def get_word(self):
  9.         self.theword = self.entry1.get()
  10.         self.use_thetitle()

  11.     def use_thetitle(self):
  12.         # 清空之前的标题列表
  13.         self.title_list.clear()

  14.         # 获取选中项的索引
  15.         selected_indices = self.listbox1.curselection()

  16.         # 根据索引获取选中的数据并添加到标题列表中
  17.         for index in selected_indices:
  18.             title = self.listbox1.get(index)
  19.             self.title_list.append(title)

  20.         print(self.title_list)
复制代码


现在,当你点击"搜索"按钮时, use_thetitle 方法将获取选中的多个数据,并将它们添加到 title_list 列表中。请注意,在这个例子中,我们假设 title_list 是一个在类中定义的列表,用于存储选中的多个数据。你需要确保在初始化类时正确定义 self.title_list ,并将其作为类的一个属性来使用。

这样,你就可以一次传递选中的多个数据了。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-8-1 13:34:45 | 显示全部楼层    本楼为最佳答案   
在tkinter中,如果使用多选的listbox组件,可以通过 curselection() 方法来获取选中的多个数据。 curselection() 方法返回一个包含选中项索引的元组,然后可以使用这些索引来获取对应的值。下面是修改后的代码:

  1. import tkinter as tk

  2. class YourClassName:
  3.     def __init__(self):
  4.         # 其他初始化代码
  5.         self.button1 = tk.Button(labelframe1, text='搜索', command=self.get_word).grid(column=2, row=0)
  6.         self.listbox1 = tk.Listbox(labelframe2, width=40, selectmode=tk.MULTIPLE, yscrollcommand=self.scbar.set)
  7.         self.listbox1.pack()

  8.     def get_word(self):
  9.         self.theword = self.entry1.get()
  10.         self.use_thetitle()

  11.     def use_thetitle(self):
  12.         # 清空之前的标题列表
  13.         self.title_list.clear()

  14.         # 获取选中项的索引
  15.         selected_indices = self.listbox1.curselection()

  16.         # 根据索引获取选中的数据并添加到标题列表中
  17.         for index in selected_indices:
  18.             title = self.listbox1.get(index)
  19.             self.title_list.append(title)

  20.         print(self.title_list)
复制代码


现在,当你点击"搜索"按钮时, use_thetitle 方法将获取选中的多个数据,并将它们添加到 title_list 列表中。请注意,在这个例子中,我们假设 title_list 是一个在类中定义的列表,用于存储选中的多个数据。你需要确保在初始化类时正确定义 self.title_list ,并将其作为类的一个属性来使用。

这样,你就可以一次传递选中的多个数据了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-1 13:34:49 | 显示全部楼层
要一次传递多个选中的数据,你可以使用curselection()方法来获取多选列表框中选中项目的索引,然后通过索引获取对应的值。

以下是针对你提供的代码进行修改的示例:

  1. self.button1 = tk.Button(labelframe1, text='搜索', command=self.get_words).grid(column=2, row=0)
  2. self.listbox1 = tk.Listbox(labelframe2, width=40, selectmode=tk.MULTIPLE, yscrollcommand=self.scbar.set)
  3. self.listbox1.pack()

  4. def get_words(self):
  5.     self.theword = self.entry1.get()
  6.     self.use_thetitle()

  7. def use_thetitle(self):
  8.     selected_indices = self.listbox1.curselection()  # 获取选中项的索引
  9.     self.title_list = [self.listbox1.get(index) for index in selected_indices]  # 根据索引获取选中项的值
  10.     print(self.title_list)
复制代码


get_words方法中,你可以通过curselection()方法获取到选中项目的索引,然后遍历索引列表,通过get()方法获取对应的选中项的值,并将这些值存储在self.title_list列表中。最后,你可以将self.title_list用于后续的处理。

注意,在多选模式下,curselection()方法返回一个索引的元组,因此需要使用循环来迭代处理每个索引,获取对应的值。
如果问题已经解决,请设置最佳答案
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-23 06:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表