使用sql python/tkinter填充下拉列表

使用sql python/tkinter填充下拉列表,python,mysql,sql,python-3.x,tkinter,Python,Mysql,Sql,Python 3.x,Tkinter,我使用Python3、tkinter和mysql连接器。 我想用我的sql数据创建一个optionMenu对象,我尝试这样做: mongroupe3 = LabelFrame(app, text='nouvelle div 3').pack() Label(mongroupe3, text='groupe3').pack() select_Classes = ("select id,nom from classe") cursor.execute(sele

我使用Python3、tkinter和mysql连接器。 我想用我的sql数据创建一个optionMenu对象,我尝试这样做:

     mongroupe3 = LabelFrame(app, text='nouvelle div 3').pack()
     Label(mongroupe3, text='groupe3').pack()
     select_Classes = ("select id,nom from classe")
     cursor.execute(select_Classes)
     result = cursor.fetchall()
     for row in result:
        id = row[0]
        nom = row[1]
        mongroupe3 = Label(app, text=nom).pack()
        v = StringVar()
        v.set(nom)
        om = OptionMenu(mongroupe3, v, nom)
        om.pack()
代码必须在我的“classe”表上显示一个下拉菜单,其中包含一个“nom”列表,但我的选项菜单在for循环中,执行的次数与我的classe表中的记录相同

例如,如果我有3条记录,我得到了3个选项菜单和3个不同的值

o试图将我的optionMenu从for循环中删除,如下所示:

     mongroupe3 = LabelFrame(app, text='nouvelle div 3').pack()
     Label(mongroupe3, text='groupe3').pack()
     select_Classes = ("select id,nom from classe")
     cursor.execute(select_Classes)
     result = cursor.fetchall()
     for row in result:
        id = row[0]
        nom = row[1]
        mongroupe3 = Label(app, text=nom).pack()
        v = StringVar()
        v.set(nom)
     om = OptionMenu(mongroupe3, v, nom)
     om.pack()
但我只得到了我在我的桌子上插入的最后一张唱片。
我无法将for循环放在OptionMenu中,原因是以下shema
OptionMenu(父项,默认变量,var)

由于这个原因,您得到了意想不到的结果:

您只创建一个标签,并在每次迭代中覆盖它(类变量
v
也是如此)。所以到最后,逻辑上您只得到一行(因为,同样,您只有一个标签小部件)


除此之外,您还必须关心小部件以及它们的放置位置:例如,我认为
mongroup3
必须是您要创建的行的父小部件,这与您所做的不同。

mongroup3只是在这里测试我的for循环,它返回我的表的所有记录。如果我理解正确,我需要将for循环放在选项菜单中?