Seite 1 von 1

Fieldset?

Verfasst: Montag 17. Dezember 2007, 09:00
von nkoehring
Hallo mal wieder...

Gibt es bei wxPython soetwas wie "Fieldsets" um optisch strukturieren zu koennen?
Ich glaube mal soetwas gesehen zu haben, bin mir aber nicht mehr so sicher wo und ob es ueberhaupt wxPython war ... :oops:

Gruß

EDIT: Okay... es gibt den StaticBoxSizer... gibts noch mehr? Noch schoenere Loesungen?

Re: Fieldset?

Verfasst: Donnerstag 20. Dezember 2007, 11:43
von CM
Hoi,
nkoehring hat geschrieben:Gibt es bei wxPython soetwas wie "Fieldsets" um optisch strukturieren zu koennen?
Was ist denn das? (ggf. Screenshot?) Was möchtest Du denn genau erreichen?

Gruß,
Christian

Re: Fieldset?

Verfasst: Donnerstag 20. Dezember 2007, 12:41
von gerold
nkoehring hat geschrieben:Noch schoenere Loesungen?
Hallo nkoehring!

Nicht schöner, aber flexibler und umständlicher. :P

Kleine Spielerei: http://paste.pocoo.org/show/16621/

lg
Gerold
:-)

Verfasst: Donnerstag 20. Dezember 2007, 13:33
von nkoehring
@CM in etwa sowas hier: http://www.456bereastreet.com/lab/styli ... /fieldset/

@gerold Oha... danke fuer das Beispiel ^^
Wenn ich unter Linux keine Probleme damit bekomme, versuch ich mal das Standard-HTML-Fieldset auf diese Art und Weise ;)

Verfasst: Donnerstag 20. Dezember 2007, 17:49
von CM
Ah, html/CSS!

Wie wäre denn eine wx.StaticBox ? (Ist in der Demo unter "Core Windows/Controls" als Beispiel enthalten.)

Gruß,
Christian

Verfasst: Freitag 21. Dezember 2007, 04:59
von nkoehring
Hi CM,

ja es gibt auch den StaticBoxSizer... ist schon so aehnlich wie ein Fieldset, aber soweit ich weiß, gibts da keinen Titel. Vielleicht taeusche ich mich auch gerade... naja jedenfalls habe ich mal ein Fieldset aus Gerolds Vorschlag gebaut:

Code: Alles auswählen

class FieldsetPanel(wx.Panel):

    def __init__(self, parent, caption=""):
        self.caption = caption
        wx.Panel.__init__(self, parent)
        self.Bind(wx.EVT_PAINT, self.on_paint)
        self.Bind(wx.EVT_SIZE, self.on_size)


    def on_paint(self, event = None):
        MARGIN = 10

        dc = wx.PaintDC(self)
        w, h = dc.GetSizeTuple()

        TXTW = dc.GetTextExtent(self.caption)[0] + MARGIN
        TXTH = dc.GetTextExtent(self.caption)[1]

        lines = (
            (MARGIN, MARGIN, 3*MARGIN, MARGIN),
            (3*MARGIN+TXTW, MARGIN, w-MARGIN, MARGIN),
            (MARGIN, MARGIN, MARGIN, h-MARGIN),
            (w-MARGIN, MARGIN, w-MARGIN, h-MARGIN),
            (MARGIN, h-MARGIN, w-MARGIN+1, h-MARGIN)
        )
        dc.DrawLineList(lines)

        dc.DrawText(self.caption, 3*MARGIN+MARGIN/2, MARGIN-TXTH/2)
Zu verwenden ist es wie jedes andere Panel auch, bis auf den zusaetzlichen Parameter "caption" fuer die Ueberschrift.

Verfasst: Freitag 21. Dezember 2007, 08:12
von gerold
nkoehring hat geschrieben:ja es gibt auch den StaticBoxSizer...
Hallo nkoehring!

Nicht der Sizer, sondern die Box ist hier wichtig. Suche in der Demo doch mal nach "StaticBox".

mfg
Gerold
:-)

Verfasst: Freitag 21. Dezember 2007, 11:44
von CM
Hoi,

ich meinte mit einer StaticBox so etwas wie um "Other Parameters":
Bild
Das ist doch ungefähr, was Du suchst. Code kannst Du gerne haben, aber wahrscheinlich ist der Code in der Demo etwas direkter zugänglich.

Gruß,
Christian

Verfasst: Donnerstag 3. Januar 2008, 04:32
von nkoehring
ja genau sowas suchte ich ^^

Okay, das naechste mal schaue ich mir die fertigen Gegebenheiten genauer an :oops:

vielen Dank ;)