da hätte ich doch gerne gleich mein nächstes Problem, diesmal nicht den Code, sondern das allgemeine Verhalten betreffend.
Das Problem als Kernfrage vorneweg:
Über eine Schleife generierte Widgets werden unter Linux anstandslos angezeigt, bei Windows fehlen diese mitunter und sind erst nach "Maus-Hover" sichtbar. Warum?
Ist unter Windows noch ein zusätzlicher "Handgriff" vonnöten?
Details zum Aufbau:
Ein Fenster hat vier Labelframes zur Tabellenbearbeitung aus einer DB, die auf MS-SQL-Server oder lokal als SQLite vorhanden ist.
Gibt es beides, wird der MS-SQL-Server gewählt. Ist dieser nicht erreichbar, wird lokal zugegriffen.
Die aktuell anzuzeigende Tabelle wird mit einer ComboBox aus LabelFrame 1 ausgesucht und Informationen wie z.B. zum Typ bzw. der Verbindung angezeigt.
LabelFrame 2 zeigt die Tabelle im Treeview dynamisch entsprechend der Auswahl, LabelFrame 3 enthält Entrys und Buttons für die Suche / Filterung.
Im letzten LabelFrame 4 werden mittels .pack() Labels und Entrys platziert. Dies sind die Namen und dazugehöriger Felder einer Tabelle.
Auch das wird dynamisch entsprechend der gewählten Tabelle aktualisiert (for-Schleife über die Spaltennamen, anzuzeigende Label etc..)
Dazu gehören noch Buttons für Aktualisierung (SQL-UPDATE), Löschen (SQL-DELETE) und Neu (SQL INSERT-INTO).
Das funktioniert alles wunderbar und ohne jede Schwierigkeit unter Linux.
Unter Windows ist die Programmfunktionalität zwar ebenfalls voll gegeben, aber die Label und Felder werden teilweise nicht angezeigt - für jede Tabelle anders und nicht reproduzierbar.
Zumindest die Felder werden bei Maus-Hover oder Auswahl eines Datensatzes im Treeview aber plötzlich angezeigt (also "nachträglich" eingeblendet), die Label bleiben unsichhtbar.
Erst- oder Zweit- oder xxx-Aufruf spielen keine Rolle.
Was habe ich zur Lösung versucht:
In die for-Schleife eingebaute update() und update_idletask() ändern nichts an dem Verhalten, egal ob ich das "parent" den (das?) LabelFrame aktualisiere oder beides..
Sie funktionieren aber, da ich zum Beispiel die Größe / Umbruch ebenfalls dynamisch ausführe und dazu die Größe des nächsten Widgets hole, was nur nach update() sinnvolle Resultate ergibt. Hierfür reicht update() des LabelFrame. Passt es rechts nicht mehr, geht es links in neuer Zeile weiter. Das wäre mit "grid()" vielleicht einfacher, wegen des Gesamtkonzepts habe ich hier aber .pack() genommen / nehmen müssen.
Was ist das Problem bei der Anzeige unter Windows? Ein "strukturelles" Problem vermute ich eigentlich nicht, da keinerlei Schwierigkeiten unter Linux bestehen.
Wenn hierzu jemand eine Idee hätte, würde mich das sehr freuen

Gruß,
Dirk