TextCtrl aktualisieren lassen

Plattformunabhängige GUIs mit wxWidgets.
Antworten
maxip
User
Beiträge: 61
Registriert: Dienstag 11. März 2008, 09:43

Hi,

ich habe ein Frame, darauf ein Panel und darauf mehrere StaticText und mehrere TextCtrl. Die textCtrl sind Read-Only, nachdem man etwas gemacht hat, aendern sich die Werte in den TextCtrl. Die Frage ist nun: Wie kriege ich es hin, dass die aktuellen Werte auch ausgegeben werden ?

ist Refresh die richtige Methode ? Muss ich das Frame refreshen, das panel oder auch jedes TextCtrl ? oder nur die TextCtrl ? Was ist die richtige vorgehensweise ?

Btw., wxPython erinnert mich stark an Swing aber es ist sehr viel leichter zu benutyzen :)

Wenn die TextCtrl ReadOnly sind kann man dann aber schon noch per setValue die Werte aendern oder ?

Danke
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

maxip hat geschrieben:Wenn die TextCtrl ReadOnly sind kann man dann aber schon noch per setValue die Werte aendern oder ?
Hallo maxip!

Ja!

Und hier stehen die Details:
- http://docs.wxwidgets.org/stable/wx_wxt ... rlsetvalue
- http://docs.wxwidgets.org/stable/wx_wxw ... dowrefresh

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
maxip
User
Beiträge: 61
Registriert: Dienstag 11. März 2008, 09:43

OK, danke

und was waere der offizielle Weg um zu sagen, dass sich der Wert geanedert hat und das aktualisiert werden soll ?

Refresh und dann Update ? oder ware das unsauber ?
maxip
User
Beiträge: 61
Registriert: Dienstag 11. März 2008, 09:43

Ok, self.newDevicesAtAllText.SetModified(True) reicht...
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Hallo maxip!

Code: Alles auswählen

txtctrl.Refresh()
txtctrl.Update()
``txtctrl.SetModified()`` hat damit nichts zu tun. Dass es dadurch bei dir upgedated wird, ist nur Zufall.

Ein ``Refresh()`` sollte normalerweise schon genügen. Das ``Update()`` schiebt man nach, wenn der Neuaufbau unbedingt sofort sein muss.

Wenn sich die Anzeige (z.B. in Schleifen) sehr oft hintereinander ändert, dann kannst du auch mit ``wx.YieldIfNeeded()`` experimentieren. Dann wird dem Update genug Zeit für den GUI-Aufbau gelassen.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
maxip
User
Beiträge: 61
Registriert: Dienstag 11. März 2008, 09:43

reicht es, refresh und upate auf das Panel zu machen, dass die TextCtrl enthaelt, oder muss es unbedingt auf die die einzelnen textCtrl gemacht werden ?
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

maxip hat geschrieben:reicht es, refresh und upate auf das Panel zu machen, dass die TextCtrl enthaelt, oder muss es unbedingt auf die die einzelnen textCtrl gemacht werden ?
Hallo maxip!

Jetzt mal Klarton: Lies das --> http://docs.wxwidgets.org/stable/wx_wxw ... dowrefresh

Wenn ich schon Links zur Dokumentation raus suche, dann erwarte ich, dass die dahinter verborgenen Seiten/Textstellen auch gelesen werden. Außerdem kann man solche Dinge in kürzester Zeit selber ausprobieren/herausfinden.

Wie verhält es sich, wenn man nur ``Refresh()`` verwendet?
Wie verhält es sich, wenn man ``Refresh()`` und ``Update()`` verwendet?
Wie verhält es sich, wenn man nur ``Update()`` verwendet?
Wie verhält es sich, wenn man nur ``wx.YieldIfNeeded()`` verwendet?
Wie verhält es sich, wenn man das ``Update()`` des Containers ausführt? Ist es notwendig, trotzdem alle TextCtrls durchzulaufen?

Das sind alles Fragen, die man nicht stellen muss. So etwas probiert man aus.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Antworten