首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ValueError:<tkinter.OptionMenu对象。!optionmenu>不在列表中

ValueError:<tkinter.OptionMenu对象。!optionmenu>不在列表中
EN

Stack Overflow用户
提问于 2020-08-25 00:43:17
回答 1查看 67关注 0票数 1

我尝试将一个相应值打印到另一个列表的索引中,如下所示:

打印(safeDischem.index(self.drop2))

但是在这样做的时候,我得到了上面的错误。我相信我在之前的迭代中已经成功了,但是我找不到之前的版本。

代码语言:javascript
复制
import tkinter as tk
from tkinter import ttk

safeDis = [4,88,18,50,12,100]
chem = ["HTP 50%","HTP 84%","HTP 90%","Kerosene","Benzene"]

class Page4:
    def __init__(self,root):
        self.root = root           
        self.toplbl = ttk.Label(root, text="Select firing point meterials ",font=("arial",12)) #lable for select meterial 1
        self.lbl1 = ttk.Label(root, text="Meterial 1: ",font=("arial",10)) #lable for select meterial 1
        self.lbl2 = ttk.Label(root, text = "Meterial 2: " ,font = ("arial",10)) #lable for meterial 2 
        self.masslbl = ttk.Label(root, text="Mass in Kg:",font=("arial",10)) 
        self.masslbl2 = ttk.Label(root, text="Mass in Kg:",font=("arial",10)) 
        self.typelbl = ttk.Label(root, text="Type:",font=("arial",10))
        self.typelbl2 = ttk.Label(root, text="Type:",font=("arial",10))
        self.Apply = ttk.Button(root, text="Apply", command = self.new_window)  #button to confirm the meterial choices      
        self.Back = ttk.Button(root, text="Back", command = print("DONG"))
        self.mass1 = ttk.Entry(root, width=8)                       
        self.mass2 = tk.Entry(root,width=8)
        self.clicked = tk.StringVar()   #set the variable to a string value allowing the meterial names to apeer in it
        self.clicked.set(chem[3])    #set the default meterial from the chem list
        self.clicked2 = tk.StringVar()
        self.clicked2.set(chem[3])
        self.drop2 = tk.OptionMenu(root, self.clicked2, *chem)   #setup the dropdown menue with optionmenue function set to the chem list
        self.drop = tk.OptionMenu(root, self.clicked, *chem) 
        
        self.toplbl.grid(column=0, row=0,columnspan=3,sticky="w",padx=10,pady=10)    #place meterial label 1
        self.lbl1.grid(column=0, row=1,padx=10)    #place meterial label 1
        self.lbl2.grid(column=0, row=3,padx=10)      #place meterial label 2
        self.mass1.grid(column=2, row=2) 
        self.mass2.grid(column=2, row=4)
        self.masslbl.grid(column=1, row=2)  
        self.masslbl2.grid(column=1, row=4)            
        self.typelbl.grid(column=1, row=1,sticky="w") 
        self.typelbl2.grid(column=1, row=3,sticky="w")
        self.drop.grid(column=2, row=1)        #place the dropdown menue
        self.drop2.grid(column=2, row=3)                                                               
        self.Apply.grid(column=2,row=5,pady=10,padx=10) 
        self.Back.grid(column=1,row=5,pady=10,padx=10)
        print(safeDis[chem.index(self.drop2)])
    def new_window(self):       
        
        #print(dongalong) 
        for widget in self.root.winfo_children():
            widget.destroy()              
        self.app = Page3(self.root)
#class Page5:
def main(): 
    root = tk.Tk()
    app = Page4(root)
    root.mainloop()

if __name__ == '__main__':
    main()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-25 17:14:45

问题是self.drop2OptionMenu的对象,而不是它的值。要获取它返回的值,请在其定义的变量(self.clicked2.get())上使用get()方法

所以它应该是:

代码语言:javascript
复制
print(safeDis[chem.index(self.clicked2.get())])

希望它解决了这个错误,如果有任何疑问,请让我知道

干杯

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63565250

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档