Ich wollte hier mal was fragen, auch weil ich nicht genau weiß 'wonach' ich suchen soll.
Und zwar geht es sich um folgenden Fall:
Ich habe 2 Python-Dateien erstellt wo eine Datei die Haupt-GUI sein soll und die andere Dateien sollen Bereiche des GUI's sein. Ich dachte mir das wäre sehr nützlich bezüglich der Übersicht um mit dem Datei zu arbeiten.
Die beiden Dateien sehen so aus:
Datei 1:
Code: Alles auswählen
#Module importieren
import tkinter as tk
import sys
import os
#Kontrollbutton
def control():
print("Funktioniert")
#Buttonfunktion
def button_neu():
import GUI_new_category
del sys.modules["GUI_new_category"]
#GUI
main_window = tk.Tk() #Erstellung des Fensters
main_window.title("Lagersystem") # Arbeitstitel <<Muss geändert werden>>
main_window.geometry("200x100")
#Menüleiste
menu_bar = tk.Menu(main_window)
#Filemenu
file_menu = tk.Menu(menu_bar, tearoff = 0)
file_menu.add_command(label="Neu", command=button_neu) #unbenutzt
file_menu.add_command(label="Öffnen", command=control) #unbenutzt
file_menu.add_separator()
file_menu.add_command(label="Exit", command = main_window.destroy)
#Menü Leistenbutton
menu_bar.add_cascade(label="Datei", menu = file_menu)
main_window.config(menu=menu_bar)
main_window.mainloop()
Code: Alles auswählen
#Modul
import tkinter as tk
def control():
print("test")
#Neu
class new_category():
new_window = tk.Toplevel()
new_window.title("Neues Lager")
new_window.geometry("200x400")
Wenn ich das Modul mit Class new_category() importiere, wird dieses modul sofort ausgeführt - bedeutet ich starte das Hauptprogramm und automatisch wird das Modul mit der Klasse ausgeführt. Das soll es allerdings nicht - Es soll erst geöffnet werden wenn man den entsprechenden Button drückt und soll auch dann wiederholbar ausgeführt werden können. Das klappt allerdings nicht so.
Folgendes habe ich schon probiert:
Hat nicht so funktioniert wie ich es dachte:
-Import versucht im Button-Befehl mit einzubinden. Funktioniert auch, allerdings funktioniert es nur 1x.
-Import Befehl in eine Definition gesetzt, selbiges Problem: Es passiert nur einmal.
Hat funktioniert wie ich es dachte:
-Die Klasse im Hauptprogramm schreiben und dann aufrufen.
-Das Modul in einer Funktion aufrufen und danach wieder löschen.
Jetzt bin ich zu folgender 'Lösung' gekommen:
Code: Alles auswählen
def button_neu():
import GUI_new_category
del sys.modules["GUI_new_category"]
Hätte da jemand einen Hinweis wie man es besser lösen könnte? Ich muss gestehen mir fällt nämlich nichts ein wie ich es anders lösen könnte. Habe ich irgendwo etwas vergessen?