【问题标题】:Populating listbox with only one content from several仅使用多个内容中的一个内容填充列表框
【发布时间】:2018-04-12 11:42:21
【问题描述】:

如果内容存在不止一个,我想用tuple 填充tkinter Listbox,只应插入其中一个内容。已在此站点上搜索没有得到解决该问题的答案。

from tkinter import *


rows = (('python', 'kivy'), ('python', 'tkinter'),("python","wxpython",32),
('PHP', 'bootstrap'),('html', 'ajax'),('html', 'css'), ('python', 'tkinter'))

root = Tk()

l = Listbox(root)

for row in rows:
    if row[0] not in rows:
        l.insert(END, row[0])
l.pack()

root.mainloop()

【问题讨论】:

  • 您希望if row[0] not in rows: 做什么?您正在检查字符串是否不在元组列表中。这将始终返回True,因为元组永远不会等于字符串。您究竟希望 Listbox 中的结果是什么样的?
  • 想要python, PHP, html
  • 那么最简单的方法就是使用 unique = set([row[0] for row in rows]) 之类的东西预先获取唯一值。然后,您可以循环访问unique,而无需打扰if

标签: python tkinter listbox


【解决方案1】:

根据 @fhdrsdg 的评论,如果要实现结果,您将如何进行。您将使用 set 获取之后的值,然后通过变量 loop 获取值 unique插入Listbox

from tkinter import *


rows = (('python', 'kivy'), ('python', 'tkinter'),("python","wxpython",32),
('PHP', 'bootstrap'),('html', 'ajax'),('html', 'css') )

root = Tk()

l = Listbox(root)

unique =  set([row[0] for row in rows])
for x in unique:
    l.insert(END, x)

l.pack()

root.mainloop()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-05
    • 1970-01-01
    相关资源
    最近更新 更多