[英]Python tkinter - How to get the value of Optionmenu created by loop in a list?
我希望当用户在 Optionmenus 之一中选择一个项目时,所选值将保存到列表( listbox_list )中的特定position 中。 选项菜单由循环创建。
我尝试了下面的代码,但它不起作用。
如果用户在第三个选项菜单中选择“Calc”,则listbox_list[2]中的值将被“Calc”适配。
我能怎么做?
import os
import tkinter
from tkinter import *
from tkinter import ttk
from tkinter import filedialog
from tkinter.messagebox import showinfo
head_list=('Calc','Capacity','Speed','Weight')
listbox_list=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
fenetre=Tk()
fenetre.geometry("800x600")
def printa():
print(listbox_list[1].get()) -- EDIT : SOLUTION I FOUND
boutonlaunch=Button(fenetre,text="Launch",width=15,height=1,bg="white",bd=5, command=printa)
boutonlaunch.pack(side=LEFT)
ay=0
i_num=0
for x in range(21):
cadre1=Frame(fenetre)
cadre1.pack(side=TOP,anchor=NW)
cadre=Frame(cadre1)
cadre.pack()
index_label=Label(cadre, width=5,text=i_num)
index_label.pack(side=LEFT)
var_entry=StringVar()
my_entry=Entry(cadre,textvariable=var_entry, bd=5)
my_entry.pack(side=LEFT)
value_inside = StringVar()
value_inside.set("Select an Option")
listbox = OptionMenu(cadre, value_inside, *head_list, command=lambda _:list_add)
listbox.config(width=20)
listbox.pack(side=LEFT)
listbox_list[i_num]=value_inside #--- EDIT : SOLUTION I FOUND
i_num+=1
fenetre.mainloop()
os.system('pause')
谢谢 !
编辑解决方案:我的错误是 listbox_list[i_num]=value_inside.get(),我们只需要将 listbox_list[i_num]=value_inside(没有 get())添加到列表中。 那么我们要调用具体的值,就需要.get()。
我的错误是listbox_list[i_num] = value_inside.get()
:我只需要listbox_list[i_num] = value_inside
(没有get()
)添加到列表中。 那么我们要调用具体的值,就需要.get()
。
import os
import tkinter
from tkinter import *
from tkinter import ttk
from tkinter import filedialog
from tkinter.messagebox import showinfo
head_list=('Calc','Capacity','Speed','Weight')
listbox_list=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
fenetre=Tk()
fenetre.geometry("800x600")
def printa():
print(listbox_list[1].get()) # <- HERE
boutonlaunch=Button(fenetre,text="Launch",width=15,height=1,bg="white",bd=5, command=printa)
boutonlaunch.pack(side=LEFT)
ay=0
i_num=0
for x in range(21):
cadre1=Frame(fenetre)
cadre1.pack(side=TOP,anchor=NW)
cadre=Frame(cadre1)
cadre.pack()
index_label=Label(cadre, width=5,text=i_num)
index_label.pack(side=LEFT)
var_entry=StringVar()
my_entry=Entry(cadre,textvariable=var_entry, bd=5)
my_entry.pack(side=LEFT)
value_inside = StringVar()
value_inside.set("Select an Option")
listbox = OptionMenu(cadre, value_inside, *head_list, command=lambda _:list_add)
listbox.config(width=20)
listbox.pack(side=LEFT)
listbox_list[i_num]=value_inside # <- HERE
i_num+=1
fenetre.mainloop()
os.system('pause')
此答案作为对问题Python tkinter - 如何获取列表中循环创建的 Optionmenu 的值的编辑发布? 由 OP Meriole根据 CC BY-SA 4.0 编写。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.