繁体   English   中英

Python tkinter - 如何获取列表中循环创建的 Optionmenu 的值?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM