da ich in Python und vorallem in wxPython noch nicht so fit bin, wird die Frage warscheinlich ziemlich blöd rüberkommen. Aber ich würde gerne wissen wie ich ein Frame neu erstellen/zeichnen/konstruieren kann.
Ich habe ein Haupt-Frame in dem sich eine ListCtrl befindet. Diese zeigt mir alle Datensätze meiner kleinen Datenbank an. Wenn ich einen Neuen Datensatz hinzufügen möchte, soll ein weiteres Frame(Hinzufügen) geöffnet werden in welchen ich dann den neuen Datensatz eintrage und mit drücken des Buttons(Hinzufügen) erstelle. Dabei soll das Frame(Hinzufügen) geschlossen werden und das Haupt-Frame mir die aktualisierte ListCtrl anzeigen.
Bei mir befinden sich das Haupt-Frame und das Frame(Hinzufügen) in jeweils separaten Modulen/Dateien.
Haupframe --> FilmarchivFrame1
Frame(Hinzufügen) --> FilmarchivFrame2
So weit ich es herrausgefunden habe soll das mit dem Befeh refresh() oder update() funktionieren. Aber ich komme nicht dahinter wie und wo man sie anwendet. Oder ich bin völlig auf dem falschen Weg.
Hier der Quellcode (in der abgespeckten Version):
#Haupt-Frame:
Code: Alles auswählen
class Frame1(wx.Frame):
def _init_coll_listCtrl_Film_Tabelle_Columns(self, parent):
parent.InsertColumn(col=0, format=wx.LIST_FORMAT_RIGHT, heading='ID',
width=-1)
parent.InsertColumn(col=1, format=wx.LIST_FORMAT_LEFT, heading='Kunde',
width=-1)
liste = FilmarchivFunktionen1.tabelle_anzeigen()
for i in liste:
parent.InsertStringItem(0, str(i[0]))
parent.SetStringItem(0,1, i[1])
def _init_ctrls(self, prnt):
wx.Frame.__init__(self, id=wxID_FRAME1, name='', parent=prnt,
pos=wx.Point(156, 34), size=wx.Size(1288, 1058),
style=wx.DEFAULT_FRAME_STYLE, title='Filmarchiv')
self.panel1 = wx.Panel(id=wxID_FRAME1PANEL1, name='panel1', parent=self,
pos=wx.Point(0, 0), size=wx.Size(1280, 981),
style=wx.TAB_TRAVERSAL)
self.SetClientSize(wx.Size(1280, 1024))
def _init_coll_toolBar1_Tools(self, parent):
parent.DoAddTool(bitmap=wx.Bitmap(u'Icons/application_add.png',
wx.BITMAP_TYPE_PNG), bmpDisabled=wx.NullBitmap,
id=wxID_FRAME1TOOLBAR1TOOLS_HINZUFUEGEN, kind=wx.ITEM_NORMAL,
label='', longHelp='Einen neuen Film hinzuf\xfcgen',
shortHelp='Hinzuf\xfcgen...')
self.Bind(wx.EVT_TOOL, self.OnToolBar1Tools_hinzufuegenTool,
id=wxID_FRAME1TOOLBAR1TOOLS_HINZUFUEGEN)
parent.Realize()
def __init__(self, parent):
self._init_ctrls(parent)
def OnToolBar1Tools_hinzufuegenTool(self, event):
settingWindow = FilmarchivFrame2.Frame_Hinzufuegen(self)
settingWindow.Show(True)
Code: Alles auswählen
class Frame_Hinzufuegen(wx.Frame):
def _init_ctrls(self, prnt):
wx.Frame.__init__(self, id=wxID_FRAME_HINZUFUEGEN,
name='Frame_Hinzufuegen', parent=prnt, pos=wx.Point(172, 412),
size=wx.Size(908, 343), style=wx.DEFAULT_FRAME_STYLE,
title='Hinzuf\xfcgen')
self.SetClientSize(wx.Size(900, 309))
self.panel1 = wx.Panel(id=wxID_FRAME_HINZUFUEGENPANEL1, name='panel1',
parent=self, pos=wx.Point(0, 0), size=wx.Size(900, 309),
style=wx.TAB_TRAVERSAL)
self.staticText_Kunde = wx.StaticText(id=wxID_FRAME_HINZUFUEGENSTATICTEXT_KUNDE,
label='Kunde:', name='staticText_Kunde', parent=self.panel1,
pos=wx.Point(15, 85), size=wx.Size(75, 21), style=0)
self.textCtrl_Kunde = wx.TextCtrl(id=wxID_FRAME_HINZUFUEGENTEXTCTRL_KUNDE,
name='textCtrl_Kunde', parent=self.panel1, pos=wx.Point(90, 85),
size=wx.Size(400, 21), style=0, value='')
self.button_Erstellen = wx.Button(id=wxID_FRAME_HINZUFUEGENBUTTON_ERSTELLEN,
label='Erstellen', name='button_Erstellen', parent=self.panel1,
pos=wx.Point(723, 275), size=wx.Size(75, 25), style=0)
self.button_Erstellen.Bind(wx.EVT_BUTTON, self.OnButton_ErstellenButton,
id=wxID_FRAME_HINZUFUEGENBUTTON_ERSTELLEN)
def __init__(self, parent):
self._init_ctrls(parent)
def OnButton_ErstellenButton(self, event):
werte = []
id = FilmarchivFunktionen1.id_bestimmen()
kunde = self.textCtrl_Kunde.Value
werte.append(str(id))
werte.append(kunde)
FilmarchivFunktionen1.film_hinzufuegen(werte)
self.Close()