Hey,
ich habe eine Klasse erstellt die ein Hauptfenster erstellt und möchte aus einer anderen klasse einen Textfeld erstellen der sich auf das Hauptfenster bezieht.
So wie ich es verstanden habe braucht man dafür den Parameter "master" um vorzugeben in welchem Fenster nun der Textfeld angezeigt werden soll.
Leider funktioniert das bei mir nicht so richtig. Hat jemand davon Ahnung und kann mir meinen Fehler zeigen?
lieben Dank! :)
main.py
import view
import controller
import customtkinter as ctk
class Main(view.MainWindow):
def __init__(self):
super().__init__()
self.main_window = view.MainWindow()
self.main_window.set_size("1680", "900")
self.main_window.set_title("YourTerminal")
controller.InputBoxMain()# Nach meinem Verständnis muss hier der Master-Parameter angegeben werden. Wie übergebe ich diesen?
def run(self):
self.main_window.get_window().mainloop()
if __name__ == "__main__":
app = Main()
app.run()
view.py
import customtkinter as ctk
class MainWindow:
def __init__(self):
self.window = ctk.CTk()
def set_size(self, width, height):
self.window.geometry(f"{width}x{height}")
def set_title(self, title):
self.window.title(title)
def get_window(self):
return self.window
class WindowTemplate:
def __init__(self):
self.window = ctk.CTkToplevel()
def set_size(self, width, height):
self.window.geometry(f"{width}x{height}")
def set_title(self, title):
self.window.title(title)
def get_window(self):
return self.window
# der master Parameter gibt an wo diese Box angezeigt werden soll
class InputBoxTemplate:
def __init__(self, master): # Wie übergebe ich den master Parameter?
self.master = master
self.box = ctk.CTkEntry(self.master)
def set_size(self, width, height, y, x):
self.box.place(width=width, height=height, pady=y, padyx=x)
def set_placeholder(self, placeholder):
self.box._placeholder_text(f"{placeholder}")
controller.py
import view
import customtkinter as ctk
import main
class InputBoxMain(view.InputBoxTemplate, main.Main):
def __init__(self):
super().__init__()
self.master = ctk.CTk()
self.window = view.InputBoxTemplate(self.master)# Oder der Master-Parameter wird hier übergeben? Hier versuche ich master auf ctk.CTk zu beziehen. Das ist das Haupfenster.
self.window.set_size(200, 200, 10, 10)
self.window.set_placeholder("Hier steht der Placeholder")
Hier die Fehlermeldung falls relevant:
Traceback (most recent call last):
File , line 1, in <module>
import view
File , line 2, in <module>
import main
File , line 2, in <module>
import controller
File " line 4, in <module>
class InputBoxMain(view.InputBoxTemplate, main.Main):
^^^^^^^^^^^^^^^^^^^^^
AttributeError: partially initialized module 'view' has no attribute 'InputBoxTemplate' (most likely due to a circular import)