可变属性tkinter菜单出现问题

时间:2019-07-07 14:37:53

标签: python tkinter tkinter-menu

我从一个单独的类中调用的变量化合物在我调用它时不再分配任何值,因此for循环没有任何可迭代的依据。我不知道如何引用变量(化合物),以便它的值仍在列表中。

我尝试在CalculatorPage2类中创建一个单独的方法来确定选项,但是我也遇到了属性错误。我相信是因为不在self函数中时无法引用__init__

包含菜单按钮初始化的类,它具有更多功能,但为简洁起见,我将其删除。

class CalculatorPage2(tk.Frame):
    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent)

        Known_Menu = tk.Menubutton(self, text = 'Known compound:')
        Known_Menu.menu = tk.Menu(Known_Menu)
        Known_Menu["menu"] = Known_Menu.menu
        for i in Equation.compounds:
            Known_Menu.menu.add_command(label = Equation.compounds[i],
                                        command = lambda: print(i))
        Known_Menu.place(relx = 0.4, rely = 0.3)

初始化类函数在一个单独的类中,包含化合物变量。我注释掉了您可以忽略的行,但以防万一。

Class Equation():
    compounds = list()
    def __init__(equation):
        Equation.equation = equation
       #halves = equation.split(' = ')
       #reactant_half = halves[0]
       #Equation.reactants = reactant_half.split(' + ')
       #product_half = halves[1]
       #Equation.products = product_half.split(' + ')
        Equation.compounds = Equation.reactants + Equation.products
        GUI.show_frame(CalculatorPage2)

我希望菜单由在Equation.compounds列表中找到的选项组成,但是没有任何选项被添加到菜单中。在目前的状态下,没有错误消息出现,这是因为该程序将Equation。compounds引用为空列表,因此没有任何可迭代的内容。为什么化合物列表为空,如何在此结构中引用它,以使其不为空? (因此将所述列表的值输入菜单按钮)

0 个答案:

没有答案