SplitWindow nochmals splitten

Plattformunabhängige GUIs mit wxWidgets.
Antworten
Francesco
User
Beiträge: 824
Registriert: Mittwoch 1. Dezember 2004, 12:35
Wohnort: Upper Austria

Hallo, ich habe ein Problem mit Splitterwindows:

Code: Alles auswählen

#!/usr/bin/env python

import wx
import wx.stc

class MySplitter(wx.SplitterWindow):
    def __init__(self, parent, ID):
        wx.SplitterWindow.__init__(self, parent, ID,
                                   style = wx.SP_LIVE_UPDATE
                                   )


class StcHistory(wx.stc.StyledTextCtrl):
    def __init__(self, parent):
        wx.stc.StyledTextCtrl.__init__(self, parent, -1)


class StcMemory(wx.stc.StyledTextCtrl):
    def __init__(self, parent):
        wx.stc.StyledTextCtrl.__init__(self, parent, -1)


class ExtFrame(wx.Frame):
    def __init__(self, *args, **kwargs):
        wx.Frame.__init__(self, *args, **kwargs)
        self.splitter = MySplitter(self, -1)

        self.stcmemory = StcMemory(self.splitter)
        self.panel = wx.Panel(self.splitter)
        self.splitter.SetMinimumPaneSize(20)
        self.splitter.SplitHorizontally(self.stcmemory, self.panel, -100)

        self.subsplitter = MySplitter(self.panel, -1)
        self.stchistory = StcHistory(self.subsplitter)
        self.subpanel = wx.Panel(self.subsplitter)
        self.subsplitter.SetMinimumPaneSize(20)
        self.subsplitter.SplitVertically(self.stchistory, self.subpanel, -100)


def main():
    app = wx.App(0)
    frame = ExtFrame(None, -1, "wxExt")
    frame.Show(True)
    app.MainLoop()

if __name__ == "__main__":
    main()
Das zweite Window soll praktisch nochmals gesplittet werden. Irgendwie wird mir das nicht resized, denn da ist links oben etwas komprimiertes zu sehen.

wxgtk, 2.8.10.1
Zuletzt geändert von Francesco am Freitag 3. September 2010, 11:05, insgesamt 2-mal geändert.
Francesco
User
Beiträge: 824
Registriert: Mittwoch 1. Dezember 2004, 12:35
Wohnort: Upper Austria

Anscheinend wird das Panel erst auf die richtige Größe gebracht. Ich weiss nicht, sieht für mich eher nach einen Workaround als einer Lösung aus:
aufgeteilt und wx.CallAfter(self.init_subsplitter) aufgerufen, dann klappts.


Nein, geht leider auch nicht.

Vielleicht kann man das nicht kaskadieren und ich sollte einmal einen Multisplitter verwenden, aber nein, das muss doch so auch gehen; Problem scheint dabei das self.panel zu sein.
Francesco
User
Beiträge: 824
Registriert: Mittwoch 1. Dezember 2004, 12:35
Wohnort: Upper Austria

Nur zur Info: ich habe zwischenzeitlich eine Lösung in der wxpy list bekommen. Falls es jmd. interessiert (Lösung mit Sizers):

http://groups.google.com/group/wxpython ... ee87e6c4fc
Antworten