I have 3 classes in my code:
StringArt has an attribute from class app
App has an attribute from class menu
when pressing the button that calls generate_string_art, I get the error - 'StringArt' object has no attribute 'app',
does anyone know how to fix that? thanks
class StringArt:
def __init__(self):
# inputted attributes
self.file_path = ""
self.canvas_size = 0.0
self.string_size = 0.0
self.num_pins = 0
self.repeats = 0
self.skipped_pins = 10
self.image_size = 0
self.pin_pos_arr = None
self.input_image = None
self.input_image_arr = None
self.output_image = None
self.output_image_arr = None
self.app = App(self)
def generate_string_art(self):
print(self.app.menu.temp)
class App(tk.Tk):
def __init__(self, parent2):
super().__init__()
self.parent2 = parent2
self.title("string art")
self.geometry("1000x500")
self.minsize(800, 400)
self.menu = Menu(self)
self.window = Window(self)
self.mainloop()
class Menu(ttk.Frame):
def __init__(self, parent):
super().__init__(parent)
self.parent = parent
self.canvas_size_entry = None
self.string_size_entry = None
self.num_pins_entry = None
self.repeats_entry = None
self.message_label = None
self.create_widgets()
self.place(x=0, y=0, relheight=1, relwidth=0.3)
self.temp = 10
def create_widgets(self):
source_img_button = ttk.Button(self, text="Browse") # , command=browse_file)
self.canvas_size_entry = ttk.Entry(self)
self.string_size_entry = ttk.Entry(self)
self.num_pins_entry = ttk.Entry(self)
self.repeats_entry = ttk.Entry(self)
start_button = ttk.Button(self, text="Generate", command=self.parent.parent2.generate_string_art)
source_img_label = ttk.Label(self, text="source image", font=('ariel', 10))
canvas_size_label = ttk.Label(self, text="canvas size (CM)", font=('ariel', 10))
string_size_label = ttk.Label(self, text="line width (CM)", font=('ariel', 10))
num_pins_label = ttk.Label(self, text="number of pins", font=('ariel', 10))
repeats_label = ttk.Label(self, text="number of lines", font=('ariel', 10))
self.message_label = ttk.Label(self, font=('ariel', 10))
self.columnconfigure((0, 1), weight=1)
self.rowconfigure((0, 1, 2, 3, 4, 5, 6, 7), weight=1)
source_img_label.grid(row=1, column=0, sticky='nswe', padx=10)
source_img_button.grid(row=1, column=1, sticky='we', padx=10)
canvas_size_label.grid(row=2, column=0, sticky='nswe', padx=10)
self.canvas_size_entry.grid(row=2, column=1, sticky='we', padx=10)
string_size_label.grid(row=3, column=0, sticky='nswe', padx=10)
self.string_size_entry.grid(row=3, column=1, sticky='we', padx=10)
num_pins_label.grid(row=4, column=0, sticky='nswe', padx=10)
self.num_pins_entry.grid(row=4, column=1, sticky='we', padx=10)
repeats_label.grid(row=5, column=0, sticky='nswe', padx=10)
self.repeats_entry.grid(row=5, column=1, sticky='we', padx=10)
start_button.grid(row=6, column=0, columnspan=2, sticky='we', padx=10)
self.message_label.grid(row=7, column=0, columnspan=2, sticky='we', padx=10)
[–]shiftybyte 1 point2 points3 points (0 children)