Dynamisches Panel umsetzen

Plattformunabhängige GUIs mit wxWidgets.
Antworten
alan
User
Beiträge: 81
Registriert: Dienstag 10. April 2007, 11:30

Hallo

Ich habe ein Panel, in dem ein HtmlWindow und ein TextCtrl in einem vertikalen BoxSizer angeordnet sind. Der vertikale BoxSizer ist in einem horizontalen BoxSizer, der außerdem noch ein paar Buttons enthält.

Ich will dem Benutzer die Möglichkeit geben, wahlweise das TextCtrl ein- oder auszublenden (so dass sich das HtmlWindow über das gesamte Panel breit macht, der vertikale BoxSizer muss also auch weg). [Edit: er "muss" natürlich nicht weg, aber mit nur einem Element drin macht er wenig Sinn]

Ich habe mir ein paar Gedanken gemacht, bin mir aber nicht sicher, wie ich das umsetzen sollte.

Ideen:
1) das Panel ohne TextCtrl (und ohne vertikalem BoxSizer) als Klasse hinterlegen, und das Panel mit TextCtrl davon ableiten. Umständlich?
2) der Klasse noch einen weiteren Parameter übergeben (bool withTextCtrl) und das über ein If-Konstrukt lösen. Nicht sehr objektorientiert?
3) ...?

In beiden Fällen müsste ich das Panel neu zeichnen (wie geht das eigentlich?).

Wie macht man das möglichst pythonisch? Hat wx irgendwas vorgefertigtes dafür?
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

alan hat geschrieben:Ich will dem Benutzer die Möglichkeit geben, wahlweise das TextCtrl ein- oder auszublenden (so dass sich das HtmlWindow über das gesamte Panel breit macht
Hallo alan!

Du kannst ein Widget während der Laufzeit jederzeit wieder aus einem Sizer raus nehmen und in einen anderen Sizer stecken.

Mit ``<sizer>.Detach()`` lässt sich das Widget raus nehmen.

Hier ein Beispiel das zumindest das Rausnehmen und das dynamische Erstellen demonstriert: http://www.python-forum.de/topic-10536.html

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
alan
User
Beiträge: 81
Registriert: Dienstag 10. April 2007, 11:30

Oh das geht ja richtig einfach :)

Vielen Dank
Antworten