使用sql python/tkinter填充下拉列表
我使用Python3、tkinter和mysql连接器。 我想用我的sql数据创建一个optionMenu对象,我尝试这样做:使用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
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循环放在选项菜单中?