Как не отображать дубликаты в списке с помощью tkinter - PullRequest
0 голосов
/ 16 апреля 2020

Как я могу заставить эту программу не отображать тот же самый выбор снова пользователю, когда он уже был выбран? Я знаю, что за кулисами я могу создать набор своих записей для кода, который будет продолжать использоваться, но я не могу остановить отображение дублирующих элементов, если пользователь снова выбирает ту же самую вещь. Я думал, что «не в» заявление, возможно, сработало. Любая помощь, пожалуйста?

from tkinter import *
from tkinter import ttk

root = Tk()
# set in pixels
root.geometry("1000x750+100+100")

my_list = set()


def combo_click(event):
    my_label = Label(root, text=myCombo.get()).pack()
    if myCombo.get() not in my_list:
        my_list.add(myCombo.get())
#        print('List without duplicate items (Set) ' + '\n')

OptionList = [
"Aries",
"Taurus",
"Gemini",
"Cancer"
]

clicked = StringVar()
clicked.set(OptionList[0])
# *Options - https://docs.python.org/3/tutorial/controlflow.html#unpacking-argument-lists
#drop = OptionMenu(root, clicked, *OptionList, command=selected)
#drop.pack(pady=100)

myCombo = ttk.Combobox(root, value=OptionList)
myCombo.current(0)
myCombo.bind("<<ComboboxSelected>>", combo_click)
myCombo.pack()

root.mainloop()

1 Ответ

0 голосов
/ 16 апреля 2020

Для фильтрации дубликатов в списке вы можете использовать следующий код. Я предполагаю, что вы добавляете каждый бит текста в список Tkinter через переменные.

В моем коде переменная: a - это элемент, который мы sh добавляем в список.

Код для фильтрации записей в Tkinter список:

While True: #replace the bit inbetween w and t with your how long you want to do it 
#add everything you add to a list before you add to Tkinter Listbox as shown below.   
    for x in tlist:
        if tlist contains a:
            print("Duplicate! This will not be added.")
        else:
            [whatever_you_called_your_listbox].insert(END,a)
            print(a,"Was added.")

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...