У меня есть следующий optionMenu om = OptionMenu(mygroup3, v, name).pack() и циклы for:
for row in result:
id = row[0]
name = row[1]
он делает следующий код:
from tkinter import *
from connectdb import *
app = Tk()
global mygroup3
mygroup3 = LabelFrame(app, text='new div').pack()
Label(mygroup3, text='group3').pack()
select_Class = ("select id,name from class")
cursor.execute(select_Class)
result = cursor.fetchall()
for row in result:
id = row[0]
nom = row[1]
mygroup3 = Label(app, text=nom).pack()
v = StringVar()
v.set(nom)
om = OptionMenu(mygroup3, v, nom)
om.pack()
код создает столько optionMenu, чем мои записи таблицы, потому что мой виджет optionMenu находится в моем цикле for, но когда я помещаю свой OptionMenu за пределы, у меня есть только последние зарегистрированные записи. Итак, как я могу использовать OptionMenu, чтобы показать все мои записи?
это возможно, однако я подумал создать список с флажком в соответствии со скоростью раскрывающегося списка, это может усложнить ситуацию и сделать процесс менее динамичным. Нельзя с выпадающим списком?
Хорошо раскрывающийся список также является хорошим выбором, показывая одно ключевое поле из строки, позже имеющее другие записи / метки, чтобы показать другие детали выбора элемента из раскрывающегося списка.
да, но я не могу этого сделать, потому что моему OptionMenu нужно показать весь результат цикла, и я могу видеть только последнюю запись, я пытался поставить OptionMenu до или после цикла, но ничего хорошего. Можно ли получить цикл for внутри объекта tkinter?
Попробуйте напечатать row на консоли и проверьте, все ли вы получаете нужные строки, а тем временем закомментируйте эти соответствующие строки для OptionMenu.
Я напечатал (имя) внутри своего цикла for, он работал и распечатал всю свою запись






Я нашел решение, которое мне просто нужно, чтобы преобразовать результат цикла for в строку с mylist.append(str(row[1])) и усечь результат списка с помощью *mylist в OptionMenu
Я бы посоветовал создать список или ссылки для каждой строки, щелкнув по которой вы можете запустить
OptionMenuили просто сетку сentryили метки, содержащие все эти детали.