Und zwar: Ich habe eine base_data.py in dieser Datei müssen nur die Zugangsdaten und die Methodennamen geändert werden und das soll geschehen, wenn eine Funktion ausgeführt wird (via Buttonklick) in meiner Hauptdatei (userinterface.py). Die base_data wird dann verändert, d.h. sie bekommt die von mir eingegebenen Zugangsdaten und erstellt eine neue Klasse im root Ordner (new_class.py).
Bis hierhin klappt alles wunderbar.
Jetzt muss ich aber diese new_class.py auch benutzen, d.h. from new_class import alle Methoden. Der import muss aber in der Funktion geschehen, nachdem die Klasse überhaupt erstellt wurde? Gibt aber nen [Errno 11004] getaddrinfo failed, weil der import nicht ganz oben in der Datei geschieht? Wie soll ich da nun vorgehen?
Ist mein Ansatz schon total falsch?
Im Endeffekt muss, nachdem es möglich ist die new_class zu importieren auch automatisch ein neuer Button erscheinen verknüpft mit einer neuen Methode, die ein neues Toplevel() aufruft in der userinterface, der auch die Methoden der new_class benutzt, also doch etwas happig, aber eins nach dem anderen.
Es soll halt Möglich sein dynamisch weitere Wordpress Blogs mit meinem Tool einzutragen.
hier der Code:
Code: Alles auswählen
#######################################
# Erstellt einen neuen Wordpress Blog #
#######################################
def wp_create_blog():
blog_root = Toplevel()
blog_root.title("Wordpress Blog hinzufügen")
blog_root.resizable(0, 0)
blog_root.geometry('400x400')
""" Hier werden die Daten eingestellt fuer den neuen Blog """
def daten_einstellen():
with open('base_data.py', 'r') as f:
read_data = f.read()
read_data = read_data.replace("'http://die_seite.de/xmlrpc.php'", link_austausch_area.get("1.0", END))
read_data = read_data.replace("'username_zum_einloggen", user_austausch_area.get("1.0", END))
read_data = read_data.replace("'pw_zum_einloggen'", pw_austausch_area.get("1.0", END))
# die Methoden sind erstmal noch so, sollen aber nachher hochgezaehlt werden, so dass es imemr unterscheidliche sind
read_data = read_data.replace("def wordpress_bild", "def wordpress_bild3")
read_data = read_data.replace("def wordpress_posten", "def wordpress_posten3")
read_data = read_data.replace("def old_execute", "def new_execute")
read_data = read_data.replace("def wordpress_entfernen", "def wordpress_entfernen3")
return read_data
""" Erstellt die neue Klasse / Blog im Root Verzeichnis """
def daten_speichern():
opened_data = daten_einstellen()
with open('new_class.py', 'w') as datei:
write_data = datei.write(opened_data)
showinfo("Information", "Der Blog wurde erfolgreich erstellt!")
# hier darf ich nicht importieren? from new_class import ...
""" Labels """
info_link_austausch = Label(blog_root, text="Link zur Seite")
info_link_austausch.place(x = 10, y = 10)
info_user_austausch = Label(blog_root, text="Benutzername")
info_user_austausch.place(x = 10, y = 65)
info_pw_austausch = Label(blog_root, text="Passwort")
info_pw_austausch.place(x = 10, y = 120)
""" Text Areas """
link_austausch_area = Text(blog_root, height = 1, width = 47)
link_austausch_area.place(x = 10, y = 35)
link_austausch_area.insert("1.0", "'http://deine_seite.de/xmlrpc.php'")
user_austausch_area = Text(blog_root, height = 1, width = 47)
user_austausch_area.place(x = 10, y = 90)
user_austausch_area.insert("1.0", "'Benutzername'")
pw_austausch_area = Text(blog_root, height = 1, width = 47)
pw_austausch_area.place(x = 10, y = 145)
pw_austausch_area.insert("1.0", "'Passwort'")
""" Buttons """
# wordpress_daten_einstellen = Button(blog_root, bg = "powder blue", text = "Daten einstellen", command=daten_einstellen)
# wordpress_daten_einstellen.place(x = 10, y = 365)
wordpress_daten_speichern = Button(blog_root, bg = "Pale Green", text = "Daten einstellen", command=daten_speichern)
wordpress_daten_speichern.place(x = 295, y = 365)