ich hatte mir ein mini Beispiel erstellt und getestet, ob das denn läuft. Und es geht auf beiden Rechnern.
Code: Alles auswählen
import wx
class DialogMain(wx.Dialog):
def __init__(self, parent, id, title,
pos = wx.DefaultPosition, size = wx.DefaultSize,
style = wx.DEFAULT_DIALOG_STYLE ):
wx.Dialog.__init__(self, parent, id, title, pos, size, style)
item0 = wx.BoxSizer( wx.VERTICAL )
# obere Teil
item1 = wx.StaticText( self, -1, "Hier ist eigntlich noch ein weiteres Panel",
wx.DefaultPosition, wx.DefaultSize, 0 )
item0.Add( item1, 0, wx.ALIGN_CENTER|wx.ALL, 5 )
# panel
self.panel1 = Panel_1(self, -1)
# hinzufuegen zu sizer
item0.Add(self.panel1, 0, wx.ALIGN_LEFT)
self.SetSizer(item0)
item0.SetSizeHints( self )
# EVENTS
wx.EVT_RADIOBUTTON(self, self.panel1.Radio1.GetId(), self.OnRadio)
wx.EVT_RADIOBUTTON(self, self.panel1.Radio2.GetId(), self.OnRadio)
wx.EVT_RADIOBUTTON(self, self.panel1.Radio3.GetId(), self.OnRadio)
self.TransferDataToWindow()
def TransferDataToWindow(self):
if self.panel1.Radio1.GetValue() == True:
self.panel1.GetSizer().Show(self.panel1.SIZER_ro, True, True)
self.panel1.GetSizer().Show(self.panel1.SIZER_rm, False, True)
self.panel1.GetSizer().Show(self.panel1.SIZER_ru, False, True)
elif self.panel1.Radio2.GetValue() == True:
self.panel1.GetSizer().Show(self.panel1.SIZER_ro, False, True)
self.panel1.GetSizer().Show(self.panel1.SIZER_rm, True, True)
self.panel1.GetSizer().Show(self.panel1.SIZER_ru, False, True)
elif self.panel1.Radio3.GetValue() == True:
self.panel1.GetSizer().Show(self.panel1.SIZER_ro, False, True)
self.panel1.GetSizer().Show(self.panel1.SIZER_rm, False, True)
self.panel1.GetSizer().Show(self.panel1.SIZER_ru, True, True)
self.panel1.Layout()
def OnRadio(self, event):
self.TransferDataToWindow()
class Panel_1(wx.Panel):
def __init__(self, parent, id,
pos = wx.DefaultPosition, size = wx.DefaultSize,
style = wx.TAB_TRAVERSAL ):
wx.Panel.__init__(self, parent, id, pos, size, style)
item0 = wx.BoxSizer( wx.HORIZONTAL )#wx.VERTICAL )
# links
item1 = wx.BoxSizer( wx.VERTICAL )#wx.HORIZONTAL )
self.SIZER_1 = item1
item2 = wx.StaticText( self, -1, "text", wx.DefaultPosition, wx.DefaultSize, 0 )
item1.Add( item2, 0, wx.ALIGN_CENTER|wx.ALL, 5 )
item3 = wx.StaticText( self, -1, "text", wx.DefaultPosition, wx.DefaultSize, 0 )
item1.Add( item3, 0, wx.ALIGN_CENTER|wx.ALL, 5 )
item0.Add( item1, 0, wx.GROW|wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5 )
# mitte
item4 = wx.BoxSizer( wx.VERTICAL )#wx.FlexGridSizer( 0, 2, 0, 0 )
self.SIZER_2 = item4
self.Radio1 = wx.RadioButton( self, -1, "Radio", wx.DefaultPosition, wx.DefaultSize, wx.RB_GROUP )
item4.Add( self.Radio1, 0, wx.ALIGN_CENTER|wx.ALL, 5 )
self.Radio2 = wx.RadioButton( self, -1, "Radio", wx.DefaultPosition, wx.DefaultSize, 0 )
item4.Add( self.Radio2, 0, wx.ALIGN_CENTER|wx.ALL, 5 )
self.Radio3 = wx.RadioButton( self, -1, "Radio", wx.DefaultPosition, wx.DefaultSize, 0 )
item4.Add( self.Radio3, 0, wx.ALIGN_CENTER|wx.ALL, 5 )
item0.Add( item4, 0, wx.GROW|wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5 )
#rechts
item9 = wx.BoxSizer( wx.VERTICAL )
# rechts oben
item10 = wx.BoxSizer( wx.HORIZONTAL )
self.SIZER_ro = item10
item13 = wx.TextCtrl(self,-1,"oben")
item10.Add( item13, 0, wx.ALIGN_CENTER|wx.ALL, 5 )
# rechts mitte
item11 = wx.BoxSizer( wx.HORIZONTAL )
self.SIZER_rm = item11
item14 = wx.StaticText( self, -1, "mitte")
item11.Add( item14, 0, wx.ALIGN_CENTER|wx.ALL, 5 )
# rechts unten
item12 = wx.BoxSizer( wx.HORIZONTAL )
self.SIZER_ru = item12
item15 = wx.Button(self,-1,"unten")#wx.TextCtrl(self,-1,"unten")
item12.Add( item15, 0, wx.ALIGN_CENTER|wx.ALL, 5 )
item9.Add( item10, 0, wx.ALIGN_CENTER|wx.ALL, 5 )
item9.Add( item11, 0, wx.ALIGN_CENTER|wx.ALL, 5 )
item9.Add( item12, 0, wx.ALIGN_CENTER|wx.ALL, 5 )
item0.Add( item9, 0, wx.GROW|wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5 )
self.SetSizer(item0)
item0.SetSizeHints( self )
if __name__ == "__main__":
app = wx.PySimpleApp()
frm = wx.Frame(None,-1,"test")
frm.CentreOnScreen(wx.BOTH)
frm.Show()
pnl = DialogMain(frm,-1,"bla")
pnl.ShowModal()
app.MainLoop()
Ich habe ja schon Teile deaktiviert und die Event-Methode durch ein einziges "print" ersetzt, aber selbst bis dort kommt die Anwendung leider nicht.
Ich muss gerade warten, bis mein Kollege mich an seinen Win2000 Rechner lässt, damit ich mal den anderen Start ausprobiere. Gerold, werde deinen Hinweisen nachgehen.