Tkinter Optionmenu小部件中相同值的索引

时间:2015-01-07 18:37:06

标签: indexing tkinter optionmenu

我正在尝试访问optionmenu小部件中相同值的索引。在下面的代码中,字符" b"从列表中返回索引1,无论两者中的哪一个" b"我选择的字符。我需要区分两者" b"基于列表中索引位置的字符,即选择第一个" b"来自optionmenu小部件应该返回索引1而第二个" b"应该返回索引2.请告诉我该怎么做。提前谢谢。

from Tkinter import *

class GUI(Frame):

    def __init__(self):
        Frame.__init__(self)
        self.master.title("New window")
        self.master.geometry("300x200")
        self.grid()

        self.list1 = ["a", "b", "b"]

        self.var = StringVar()
        self.var.set("")
        self.entry = Entry(self, textvariable=self.var)
        self.entry.grid(row=0, column=0)
        self.optionMenu = OptionMenu(self, self.var, *self.list1)
        self.optionMenu.grid(row=0, column=1)

        self.button = Button(self, text="Print", command=self.print_fun)
        self.button.grid(row=0, column=2)

    def print_fun(self):
        print self.optionMenu["menu"].index(self.var.get())

obj = GUI()

obj.mainloop()

1 个答案:

答案 0 :(得分:2)

这不是选项菜单的工作方式。您必须创建自定义选项菜单。选项菜单并不是什么特别的菜单,它只是一个按钮和一个菜单,还有一些功能可以为它提供它所具有的行为。

从可用性的角度来看,这是一个非常糟糕的设计,因为用户无法知道第一个“b”选择和第二个“b”选择之间的区别。我希望一个选择不会映射到“停用炸弹”而另一个选择是“爆炸炸弹”。