Не знаете, как обновить combobox в python с подключенной базой данных - PullRequest
0 голосов
/ 06 марта 2020

Я пытаюсь выяснить, как обновить выпадающий список в выпадающем списке в tkinter. Это то, что у меня сейчас есть:

from tkinter import *
from tkinter import ttk
import sqlite3

#profile system
def prof_value_input():
    conn = sqlite3.connect('data.db')
    c = conn.cursor()

    query = c.execute('SELECT prof FROM profile')
    prof = []
    for row in c.fetchall():
        prof.append(row)
    return prof

    c.close()
    conn.close()

def prof_add_btn():
    conn = sqlite3.connect('data.db')
    c = conn.cursor()

    name=prof_input.get()
    newProf = c.execute('INSERT INTO profile VALUES (:prof)',{'prof':name})
    prof_input.set('')

    conn.commit()
    conn.close()
    return 

prof_add_btn = Button(menu, text='add profile', width=10, command=prof_add_btn)
prof_input = ttk.Combobox(menu, width=30)
prof_input.grid(column=0, row=0)
prof_add_btn.grid(column=1, row=0)
prof_input['values'] = prof_value_input()

Я действительно застрял и не уверен, где go с этим. По сути, я пытаюсь создать систему профилей, в которой вы вводите имя в поле со списком, затем оно будет обновляться в базе данных sqlite3, после чего я хочу обновить комбинированный список новым профилем, который был добавлен в базу данных.

Ответы [ 2 ]

0 голосов
/ 06 марта 2020

добавление prof_input['values'] += (name,) до return внутри prof_add_btn()

Этот код смог заставить его работать

0 голосов
/ 06 марта 2020

Simple. В этом примере я переключаюсь с этого

prof_input = Combobox(menu, width=30)

на этот, чтобы вызвать метод ниже

self.cbox = Combobox(self, width = 10, postcommand = self.updtcblist)

Использование postcommand позволит вам выполнять обратный вызов для обновления (или даже создания) меню каждый раз, когда оно отображается.

Здесь, в этом методе, оно будет обновлено.

def updtcblist(self):
    list = self.getPortLst()
    self.cbox['values'] = list

Итак, Ваш код устанавливает посткоманду и устанавливает для нее имя функции.

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