Daten ubergeben zwichen 2 frames

Plattformunabhängige GUIs mit wxWidgets.
Antworten
Benutzeravatar
azrael1111
User
Beiträge: 23
Registriert: Sonntag 12. November 2006, 21:05
Wohnort: Croatien

Mittwoch 12. März 2008, 12:46

Hallo leute. Hab ein kleines problem

Ich habe ein MainFrame an (cMainFrame) dessen Button ich einen anderen frame (cFrmOptFilters) ge-bindet habe.

Code: Alles auswählen

    
self.flters=[1,1,1,1]
def OnMenuOptions_Filters(self, event):
        self.FilterForm = cFrmOptFilters.cFrmOptFilters(None, -1)
        self.FilterForm.SetFlags(self.filters)
        print self.filters
        self.FilterForm.Show()
        
Im main frame habe ich eine liste [1,1,1,1] die ich im anderem ausfullen muss (Checkboxes)

Code: Alles auswählen

class cFrmOptFilters(wx.Frame):
    def __init__(self, *args, **kwds):
        # begin wxGlade: cFrmOptFilters.__init__
        kwds["style"] = wx.DEFAULT_FRAME_STYLE
        wx.Frame.__init__(self, *args, **kwds)
        self.ChbFil1 = wx.CheckBox(self, -1, "Entire Image")
        self.ChbFil2 = wx.CheckBox(self, -1, "Ratio (w>h)")
        self.ChbFil3 = wx.CheckBox(self, -1, "Upper border")
        self.ChbFil4 = wx.CheckBox(self, -1, "Lover border")
        self.BtnOptFilOk = wx.Button(self, -1, "Ok")
        
        self.__set_properties()
        self.__do_layout()
        self.__set_bindings()
        # end wxGlade
    def __set_bindings(self):
        self.Bind(wx.EVT_BUTTON, self.ButtonOk, self.BtnOptFilOk)
        pass

    def SetFlags(self,f):
        self.flags=f
        self.ChbFil1.SetValue(f[0])
        self.ChbFil2.SetValue(f[1])
        self.ChbFil3.SetValue(f[2])
        self.ChbFil4.SetValue(f[3])    

    def GetFlags(self):
        self.flags = []
        self.flags.append(int(self.ChbFil1.GetValue()))
        self.flags.append(int(self.ChbFil2.GetValue()))
        self.flags.append(int(self.ChbFil3.GetValue()))
        self.flags.append(int(self.ChbFil4.GetValue()))
        print self.flags
    
    
    def ButtonOk(self, event):
        self.GetFlags()
        self.Close()


    def __set_properties(self):
        # begin wxGlade: cFrmOptFilters.__set_properties
        self.SetTitle("frame_3")
        self.SetBackgroundColour(wx.Colour(245, 245, 252))
        self.ChbFil1.SetMinSize((-1, -1))
        self.ChbFil1.SetFont(wx.Font(12, wx.DEFAULT, wx.NORMAL, wx.NORMAL, 0, ""))
        self.ChbFil2.SetFont(wx.Font(12, wx.DEFAULT, wx.NORMAL, wx.NORMAL, 0, ""))
        self.ChbFil3.SetFont(wx.Font(12, wx.DEFAULT, wx.NORMAL, wx.NORMAL, 0, ""))
        self.ChbFil4.SetFont(wx.Font(12, wx.DEFAULT, wx.NORMAL, wx.NORMAL, 0, ""))
        self.BtnOptFilOk.SetBackgroundColour(wx.Colour(245, 245, 252))
        # end wxGlade

    def __do_layout(self):
        # begin wxGlade: cFrmOptFilters.__do_layout
        sizer_12 = wx.BoxSizer(wx.VERTICAL)
        sizer_12.Add(self.ChbFil1, 0, wx.EXPAND|wx.ALIGN_CENTER_HORIZONTAL|wx.ADJUST_MINSIZE, 0)
        sizer_12.Add(self.ChbFil2, 0, wx.EXPAND|wx.ADJUST_MINSIZE, 0)
        sizer_12.Add(self.ChbFil3, 0, wx.EXPAND|wx.ALIGN_CENTER_HORIZONTAL|wx.ADJUST_MINSIZE, 0)
        sizer_12.Add(self.ChbFil4, 0, wx.EXPAND|wx.ALIGN_CENTER_HORIZONTAL|wx.ADJUST_MINSIZE, 0)
        sizer_12.Add(self.BtnOptFilOk, 0, wx.ALIGN_BOTTOM|wx.ALIGN_CENTER_HORIZONTAL|wx.ADJUST_MINSIZE, 0)
        self.SetAutoLayout(True)
        self.SetSizer(sizer_12)
        sizer_12.Fit(self)
        sizer_12.SetSizeHints(self)
        self.Layout()
        self.Centre()
        # end wxGlade

Mein Problem liegt darin dass ich so aus dem main frame die liste in die andere form bringen kann und so die Checkboxes ausfullen kann. Wenn ich etwas in den checkboxen geaendert habe und auf ok druecke sollte es mir die werte zuruck geben und sie ins MainFraime in self.filters speicher.
ich weiss aber nicht wie.

self.filters stellt einen buffer fuer "Options"

Danke [/code]
Benutzeravatar
azrael1111
User
Beiträge: 23
Registriert: Sonntag 12. November 2006, 21:05
Wohnort: Croatien

Mittwoch 12. März 2008, 13:08

Oder sollte ich hier dialoge benutzen?
Benutzeravatar
azrael1111
User
Beiträge: 23
Registriert: Sonntag 12. November 2006, 21:05
Wohnort: Croatien

Mittwoch 12. März 2008, 15:51

Koennt ihr vergessen, Ich habs geloest.

Wenn ich dialoge benutze klapt es sofort.

Danke, trozdem
Antworten