Проблема с переменными атрибутами tkinter menu - PullRequest
0 голосов
/ 07 июля 2019

Переменные соединения, которые я вызываю из отдельного класса, больше не имеют значений, назначенных ему к тому времени, когда я его вызываю, поэтому циклу 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 в виде пустого списка и поэтому ей нечего итерировать. Почему список соединений пуст и как я могу ссылаться на него в этой структуре, чтобы он не был пустым? (и, следовательно, получить значения указанного списка в кнопку меню)

...