[python] předávání dat mezi framy ve wxPython
Leos Pol
leos na radiante-corp.com
Pátek Prosinec 8 10:12:41 CET 2006
yoko na centrum.cz wrote:
> Zdravím všechny, chtěl bych Vás požádat o pomoc se zřejmě začátečnickým problémem, taky jsem začátečník :-)
> Situace(zjednodušeno): po spuštění programu se vytvoří frame1(wx.Frame) a načte data ze souboru. Po stisku tlačítka se otevře nový frame2(wx.Frame) ve kterém potřebuji tato data používat a modifikovat a po uzavření frame2 opět již modifikovaná data používat ve frame1. Mohli byste mi prosím poradit, jak si data mezi framy předávat? Napadá mě ve framu2 modifikovaná data uložit do souboru a po jeho uzavření je ve framu1 opět načíst ze souboru, ale to se mi jednak moc nelíbí a jednak stejně nevím, jak framu1 říct, aby po uzavření frame2 načetl soubor. Používám Python 2.5, wxPython 2.7 na WinXP. Za pomoc předem moc děkuju. Petr
>
>
Ahoj,
nejprve bych chtel podotknout, ze wxPython-2.7 je development branch,
takze doporucuji pouzivat verzi 2.6.
K tvemu problemu. Myslim si, ze je spousty zpusobu, jak toto provest a
zalezi take trosku na tom, jak vse resis. Pravdepodobne mas ve fci
obsluhujici udalost EVT_BUTTON vytvoreni frame2 a jeho zobrazeni. Pak
pred tim, nez zavolas frame2.ShowModal() nebo jen frame2.Show() vytvor
novou promennou ve frame2, ktera bude obsahovat data z frame1. Cele by
to mohlo vypadat asi takhle:
def OnButtonClick(self, evt):
frame2 = Frame2(None, -1)
frame2.data = self.data # self je v tomto pripade instance
of tridy Frame1 a data jsou data, ktere frame1 nacetl
frame2.ShowModal()
Mozna jeste snazsi zpusob je ten, ze definujes frame1 jako parent pro
frame2. Nasledne pak budes mit instanci tridy Frame1 v konstruktoru
Frame2. V kodu pak asi takhle:
def OnButtonClick(self, evt):
frame2 = Frame2(self, -1)
frame2.ShowModal()
class Frame2(wx.Frame):
def __init__(self, parent):
wx.Frame.__init__(self, id = -1, parent = parent)
self.data = parent.data # nebo take self.parent = parent,
pak jsou data v self.parent.data
Doufam, ze jsem trosku pomohl.
Leo
--
----
Leos Pol
SW Engineer
Radiante Corp.
If it can be imagined,
we can implement it
Další informace o konferenci Python