Dynamisches Panel umsetzen

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

Dynamisches Panel umsetzen

Beitragvon alan » Dienstag 28. August 2007, 17:57

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: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Re: Dynamisches Panel umsetzen

Beitragvon gerold » Dienstag 28. August 2007, 21:59

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

Beitragvon alan » Dienstag 28. August 2007, 22:02

Oh das geht ja richtig einfach :)

Vielen Dank

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder