Widget aus Hauptprogramm in ausgelagertem Programm bekannt machen

Fragen zu Tkinter.
Antworten
Winki
User
Beiträge: 1
Registriert: Freitag 14. April 2023, 11:45

Hallo und guten Tag,
ich befasse mich seit zwei Tagen mit Python und der GUI-Programmierung mit tk / ttk.
In meinem Hauptprogramm habe ich ein Label-Widget erstellt.
Die Aktualisierung diese Widgets habe ich in eine Funktion ausgelagert die in einer Datei "Functions.py" steht.
Diese importiere ich in mein Hauptprogramm.
Wenn ich jetzt die Aktualisierung des Widgets anstoße bekomme ich die Meldung, dass das Label-Widget nicht definiert ist.
Macht soweit Sinn, da es ja im Hauptprogramm angelegt ist.
Meine Frage: Kann ich Widgets, die im Hauptprogramm angelegt werden in einer ausgelagerten Funktion bekannt machen?

Vielen Dank schon mal
Winki
Benutzeravatar
grubenfox
User
Beiträge: 432
Registriert: Freitag 2. Dezember 2022, 15:49

beim aufrufen der ausgelagerten Funktion das Widget mit übergeben? Sollte natürlich im Ablauf erst nach dem Erzeugen des Widgets passieren.
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

Die Lösung bei GUIs heißt Klassen. Alles, was zu einer logischen GUI-Einheit gehört, sollte auch am selben Ort sein. Um auf Elemente aus Funktionen zugreifen zu können, benutzt man eine Klasse, die Funktionen sind Methoden und alle Widgets an passende Attribute gebunden.
Globale Funktionen darf man auf keinen Fall verwenden, und ein Programm in mehrere Module aufzuspalten macht erst dann Sinn, wenn man wirklich unabhängige Funktionalitäten hat. Dann kann man auch das Modul sinnvoll benennen, nämlich mit einem Namen, der diese Gesamtfunktionalität beschreibt. Wenn man ein Modul "Functions.py" nennt, dann deutet das stark darauf hin, dass die Funktionen, die da drin stehen, nichts miteinander zu tun haben, also kein wirkliches Modul bilden.
Module schreibt man wie Variablennamen und Funktionen auf, immer komplett klein.
Antworten