Seite 1 von 1

Dynamisches Panel umsetzen

Verfasst: Dienstag 28. August 2007, 17:57
von alan
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?

Re: Dynamisches Panel umsetzen

Verfasst: Dienstag 28. August 2007, 21:59
von gerold
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
:-)

Verfasst: Dienstag 28. August 2007, 22:02
von alan
Oh das geht ja richtig einfach :)

Vielen Dank