winfo_width() gibt 1 trotz update(), update_idletasks(), after() ...
Verfasst: Sonntag 14. November 2021, 20:46
Hallo,
ich muss mal wieder um Hilfe bitten und würde mich über einen Tipp freuen: Ich möchte auf einem Canvas mathematische Graphen abhängig von der Fenstergröße rendern. Die benötigte Größe lese ich über winfo_width() bzw. winfo_height() aus. Das funktioniert auch eigentlich hervorragend - außer beim ersten Mal.
Im Tk()-Element erstelle ich mehrere Frames: eine Navigationsleiste mit Buttons, ein Infofeld mit Labels und einen Frame mit Scrollbars und einem Canvas, auf dem die Graphen gezeichnet werden. Jeder Button in der Navigationsleiste ruft einen anderen Graphen mit anderen Infos etc auf, immer wird alles korrekt gerendert. Wenn ich aber die erste Ansicht direkt nach dem Erstellen aller Widgets ohne Button-Klick aufrufen will, wird der entsprechenden Funktion über winfo 1 zurückgegeben und folglich wird der Graph Murks.
Ich habe es mit einer wahren Kaskade von update() und update_idletasks() versucht, nämlich tatsächlich auf allen Widgets.
Ich dachte: Nach einem Button-Klick funktioniert es. Dann lasse ich den Button eben mit Button.invoke() automatisch klicken.
Ich habe es mit mehreren automatischen Button-Klicks probiert.
Ich habe probiert vorher ein Dummy-Canvas zu erstellen, damit der Platz schon mal benutzt worden ist.
Ich habe probiert, die Funktion zum Anzeigen mit after() auzurufen. Von jedem Widget von Canvas bis Tk hoch und mit überreichlichen 3000ms.
Nichts davon hat funktioniert. Wenn ich dieselben Funktionen per Button-Klick starte, geht es. - Hat da noch jemand eine Idee?
Vielen Dank im Voraus!
ich muss mal wieder um Hilfe bitten und würde mich über einen Tipp freuen: Ich möchte auf einem Canvas mathematische Graphen abhängig von der Fenstergröße rendern. Die benötigte Größe lese ich über winfo_width() bzw. winfo_height() aus. Das funktioniert auch eigentlich hervorragend - außer beim ersten Mal.
Im Tk()-Element erstelle ich mehrere Frames: eine Navigationsleiste mit Buttons, ein Infofeld mit Labels und einen Frame mit Scrollbars und einem Canvas, auf dem die Graphen gezeichnet werden. Jeder Button in der Navigationsleiste ruft einen anderen Graphen mit anderen Infos etc auf, immer wird alles korrekt gerendert. Wenn ich aber die erste Ansicht direkt nach dem Erstellen aller Widgets ohne Button-Klick aufrufen will, wird der entsprechenden Funktion über winfo 1 zurückgegeben und folglich wird der Graph Murks.
Ich habe es mit einer wahren Kaskade von update() und update_idletasks() versucht, nämlich tatsächlich auf allen Widgets.
Ich dachte: Nach einem Button-Klick funktioniert es. Dann lasse ich den Button eben mit Button.invoke() automatisch klicken.
Ich habe es mit mehreren automatischen Button-Klicks probiert.
Ich habe probiert vorher ein Dummy-Canvas zu erstellen, damit der Platz schon mal benutzt worden ist.
Ich habe probiert, die Funktion zum Anzeigen mit after() auzurufen. Von jedem Widget von Canvas bis Tk hoch und mit überreichlichen 3000ms.
Nichts davon hat funktioniert. Wenn ich dieselben Funktionen per Button-Klick starte, geht es. - Hat da noch jemand eine Idee?
Vielen Dank im Voraus!