Я был слишком занят, чтобы заниматься каким-либо изучением или практикой кодирования в прошлом, однако, несмотря на пандемию c, у меня теперь есть немного времени, чтобы вернуться к кодированию.
Итак ... я используя Python 3.7 и tkinter, и я намерен вставить данные из БД (sqlite3) в виджет Listbox, вся эта часть работает нормально. Это загрузка списка категорий кодовых имен. После того, как данные вставлены в виджет, я пытаюсь получить их там, где пользователь может затем щелкнуть 1 из названий категорий, а затем он запросит в БД все строки, которые соответствуют этому названию категории, и вставит данные в другой виджет. , Еще раз это позволит пользователю затем выбрать выборку из этого виджета, который, в свою очередь, снова запросит БД, чтобы вставить данные в третий виджет для отображения фрагмента кода.
В качестве примера, чтобы лучше следовать тому, что Я работаю над Программа запускается и отображает 3 виджета (1 список, который содержит список категорий, уже загруженный, 1 список, который будет содержать список кодов, который будет вставлен после первого щелчка слова в первом списке, 1 текстовый виджет, в который будут вставлены данные как только выбор сделан из списка № 2)
Пользователь запустит программу и уже заполнил виджет «Категория» списком доступных вариантов. Затем пользователь щелкает одну из категорий и затем запрашивает БД, чтобы вставить все данные в соответствии с этим в виджет списка кодов. Теперь пользователь нажимает на кодовое имя в этом виджете, и он запрашивает БД и вставляет данные для выбранного кодового имени.
Я полагаю, что когда начальный список категорий загружается и отображается в первом списке. каждый из элементов должен быть переменной для нажатия кнопки, чтобы затем использовать переменную, назначенную для выполнения запроса для кодовых имен. Я не уверен, кто go об этом.
У меня возникли проблемы с поиском правильного способа присвоения переменной для запроса для каждой категории, а затем для каждого кодового имени после заполнения.
Мой список для категорий:
categoryFrame = LabelFrame(root, highlightbackground="black", highlightthickness=1, bg = '#FFFFDF', width = 278, height = 202, bd = 2)
categoryFrame.place(x=978,y=55)
category_label = Label(root, text='Categories', font = ('arial', 8, 'bold'), bd = 2,width = '20', fg = '#FFFFFF', bg='#284287', relief = RAISED)
category_label.place(x=978,y=33)
category = Listbox(root, font = ('arial', 8, 'bold'), bg='#FFFFDF', fg='#000000', width=45, height=13, highlightthickness=0, relief=SUNKEN)
category.place(x=980,y=57)
category.bind('<Button-1>', getList)
Мой второй список для списка элементов:
snippetFrame = LabelFrame(root, highlightbackground="black", highlightthickness=1, bg = '#FFFFDF', width = 278, height = 203, bd = 2)
snippetFrame.place(x=978,y=291)
snippet_list_label = Label(root, text='Snippet List', font = ('arial', 8, 'bold'), bd = 2, width = '20', fg = '#FFFFFF', bg='#284287', relief = RAISED)
snippet_list_label.place(x=978,y=269)
snippet_list = Listbox(root, font = ('arial', 8, 'bold'), bg='#FFFFDF', fg='#000000', bd=0, width=45, height=13, highlightthickness=0, relief=SUNKEN)
snippet_list.place(x=980,y=296)
snippet_list.bind('<ButtonRelease-1>', getCode)
Запрос БД может быть записан только тогда, когда я знаю, как назначить переменную для элементы в списке категорий, но я считаю, что это должно быть примерно так.
selection = category.get() #this is not the correct "get"
c.execute('SELECT Snippet_Name FROM Code Type WHERE Code_Type = :selection ORDER BY Snippet_Name DESC', {'selection': selection})
results = c.fetchall()
for result, in results:
snippet_list.insert(0,result)
Некоторая помощь будет принята с благодарностью.