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