Удалить элемент из списка ТТК Combobox - PullRequest
0 голосов
/ 13 марта 2020

Я сейчас пытаюсь выяснить, как удалить элемент из выпадающего списка. В настоящее время для моей кнопки удаления у меня есть следующий код:

def prof_del_btn():
    conn = sqlite3.connect('Doom.db')
    c = conn.cursor()

    name=prof_input.get()
    c.execute("SELECT prof FROM profile")
    rows=c.fetchall()

    if (name,) in rows:
        delProf = c.execute('DELETE from profile WHERE prof = "{}"'.format(name))
        prof_input.set('')
        print('Profile {} has been deleted'.format(name))
        prof_input['values'] = (prof_input['values'])
    else:
        prof_input.set('')
        print('Profile Doesn\'t Exist')

    conn.commit()
    conn.close()

Обратите внимание, я играл с этим и просто не могу понять это. В настоящее время в моем sql db у меня есть «nat» и «two» под профилем, и я пытаюсь удалить «two».

В настоящее время я не использую классы, так как в настоящее время я не очень уверен, как правильно их использовать. Как мне перезагрузить список?

1 Ответ

2 голосов
/ 13 марта 2020

Вы можете получить текущий values из Combobox, удалить необходимый элемент из списка и затем обновить values. Также вам не нужно выполнять оператор SELECT перед оператором DELETE. Ниже приведен модифицированный код:

def prof_del_btn():
    name = prof_input.get()
    if name:
        with sqlite3.connect('doom.db') as conn:
            c = conn.cursor()
            c.execute('DELETE FROM profile WHERE prof = ?', (name,))
            if c.rowcount > 0:
                print('Profile {} has been deleted'.format(name))
                options = list(prof_input['values'])
                options.remove(name)
                prof_input['values'] = options
            else:
                print('Profile {} does not exist'.format(name))
            prof_input.set('')
            conn.commit()
...