widget in einem Frame ansprechen?

Fragen zu Tkinter.
Antworten
DRW
User
Beiträge: 10
Registriert: Freitag 5. März 2021, 04:46

Guten Tag zusammen,

das kriege ich nicht gelöst:

def shomainwindow(parent, dbislocal):
...
wrapper1 = tk.LabelFrame(parent, text="Tabelle",height="12")
wrapper1.pack(fill="both", expand="yes", padx=4, pady=4)
...
tre = ttk.Treeview(wrapper1, columns=collist, show="headings", height="10")
...
rows=...
updatetbltre(rows)
...

def updatetbltre(rows):
for i in rows:
tre.insert('', 'end', values=i)

endet immer mit einem Fehler.
Versucht habe ich wrapper1.tre, root. davor (wegen root=tk.Tk()), Parameterübergabe, ...

Also zusammengefasst gelingt es mir nicht, über irgendeinen Weg per Code auf ein beliebiges, irgendwo existierendes Widget zuzugreifen, das in einer Funktion definiert wurde.
Auf globale Variablen werde ich nicht zurückgreifen, auch wenn es damit funktioniert.

Geht so etwas überhaupt oder löst man das komplett anders? Ich sitze jetzt wirklich schon tagelang vor tkInter-Dokus, aber das ist nicht dabei oder überlesen...

Danke & Grüße
Dirk
Benutzeravatar
Dennis89
User
Beiträge: 1121
Registriert: Freitag 11. Dezember 2020, 15:13

Hallo,

kannst du mal bitte den vollständigen Code *mit* vollständiger Fehlermeldung posten?


Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
Benutzeravatar
__blackjack__
User
Beiträge: 12984
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@DRW: Bei jeder nicht-trivialen GUI kommt man nicht um objektorientierte Programmierung herum, also mindestens eine eigene Klasse zu schreiben.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
DRW
User
Beiträge: 10
Registriert: Freitag 5. März 2021, 04:46

Hallo zusammen und danke euch beiden,
das das Murks war, ist mir klar. Wie man an den "wunderbaren" Variablennamen sieht, war das auch nur ein Versuch.
Es sah auf den ersten Blick so aus, als ob man auf die Klassen verzichten könnte, aber genau damit und konsequent OOP habe ich es nun gemacht.
Aber dafür habe ich gleich ein nächstes Problem, siehe anderer Post... ;-)

Gruß,
Dirk
Antworten