@Qnicci: Quelltext hier bitte nicht als Bild zeigen sondern als Text in den Beitrag einfügen und in code-Tags setzen. Das ist im Beitragseditor die Schaltfläche mit der Beschriftung „</>“.
Auf Modulebene gehört nur Code der Konstanten, Funktionen, und Klassen definiert. Das Hauptprogramm steht üblicherweise in einer Funktion die `main()` heisst.
Sternchen-Importe sind Böse™. Gerade bei `tkinter` holt man sich da hunderte von Namen ins Modul von denen nur ein kleiner Bruchteil verwendet wird.
Namen werden in Python klein_mit_unterstrichen geschrieben. Ausnahmen sind Konstanten (KOMPLETT_GROSS) und Klassen (MixedCase). `Ford` ist also für eine Funktion falsch geschrieben. `ford` wäre zwar formal richtig, aber inhaltlich keine gute Beschreibung für eine Funktion, denn die werden normalerweise nach der Tätigkeit benannt die sie ausführen. `ford` ist aber keine Tätigkeit.
Man nummieriert Namen nicht durch. Da will man sich entweder bessere Namen ausdenken, oder gar keine einzelnen Namen sondern die Werte in eine Datenstruktur zusammenfassen. Oft eine Liste. Bei den Namen in diesem Fall will man aber einfach gar keine Namen verwenden, denn die werden ja nicht mehr gebraucht.
Das die Automarken-Module jeweils in einem Verzeichnis stecken das noch mal den gleichen Namen wie das Modul hat, ist komisch bis falsch. Das sollten einfach Packages sein wenn man pro Automarke mehr als ein Modul hat.
Die Fenstergrösse sollte man nicht vorgeben, die ergibt sich ja schon automatisch aus dem Fensterinhalt.
Anwendungen die aus mehr als einem Modul bestehen sollte man in einem Package zusammenfassen.
Beispiel:
Code: Alles auswählen
#!/usr/bin/env python3
import tkinter as tk
from package_name.car_models import chrysler, ford, volkswagen
def main():
root = tk.Tk()
root.title("CanHackTool - Marke")
tk.Label("Wähle Marke").pack()
for name, module in [
("Ford", ford),
("Chrysler", chrysler),
("VW", volkswagen),
]:
tk.Button(root, text=name, command=module.main).pack()
root.mainloop()
if __name__ == "__main__":
main()