ich habe mal ein Beispiel geschrieben. Dann wir es vllt. klarer was ich will. Der Code ist mit VisualWX erzeugt worden, man möge mir des 'Zuviel' drumherrum verzeihen.
Ich habe Zwei Programme geschrieben. Es hat zwei textCtrl. Alles was im oberen textCtrl eingegeben wird erscheint auch im unteren.
Das Erste besteht nur aus einem File und funktioniert. Das Zweite besteht aus zwei Files und da liegt der Haken.
Ein allgemeines Startprog. Nur der Vollständigkeits halber. Ist für beide Programme gleich.
Code: Alles auswählen
# -*- coding: iso-8859-1 -*-
import wx
import Frame1
class App(wx.App):
def OnInit(self):
wx.InitAllImageHandlers()
self.main = Frame1.mainFrame(None, -1, '')
self.main.Show()
self.SetTopWindow(self.main)
return 1
if __name__ == '__main__':
application = App(0)
application.MainLoop()
Dieses Programm funktioniert.
Frame1.py
Code: Alles auswählen
# -*- coding: iso-8859-1 -*-
import wx
class mainFrame(wx.Frame):
def __init__(self,parent,id = -1,title='',pos = wx.Point(0,0),size = wx.Size(300,300),style = wx.DEFAULT_FRAME_STYLE,name = 'frame'):
pre=wx.PreFrame()
pre.Create(parent,id,title,pos,size,style,name)
self.PostCreate(pre)
self.VwXinit()
def VwXinit(self):
self.Show(True)
self.tx_1 = wx.TextCtrl(self,-1,"",wx.Point(55,165),wx.Size(145,21))
self.panel_1 = wx.Panel(self,-1,wx.Point(35,25),wx.Size(185,90))
self.tx_2 = wx.TextCtrl(self.panel_1,-1,"",wx.Point(20,35),wx.Size(145,21))
self.Bind(wx.EVT_TEXT,self.tx_2_VwXEvOnText,self.tx_2)
self.Refresh()
return
def VwXDelComp(self):
return
def tx_2_VwXEvOnText(self,event):
inp = self.tx_2.GetValue()
self.tx_1.SetValue(inp)
return
Das Zweite Programm. Von der funktionalität das gleiche, allerdings aufgeteilt in zwei Klassen/Files.
Frame1.py
Code: Alles auswählen
# -*- coding: iso-8859-1 -*-
import wx
import Panel2
class mainFrame(wx.Frame):
def __init__(self,parent,id = -1,title='',pos = wx.Point(0,0),size = wx.Size(300,300),style = wx.DEFAULT_FRAME_STYLE,name = 'frame'):
pre=wx.PreFrame()
pre.Create(parent,id,title,pos,size,style,name)
self.PostCreate(pre)
self.VwXinit()
self.initAfter()
def VwXinit(self):
self.Show(True)
self.tx_1 = wx.TextCtrl(self,-1,"",wx.Point(55,165),wx.Size(145,21))
self.panel_1 = wx.Panel(self,-1,wx.Point(35,25),wx.Size(185,90))
self.Refresh()
return
def VwXDelComp(self):
return
def initAfter(self):
self.pan1 = Panel2.panel_2(self.panel_1)
return
und der zweite File/classe
Code: Alles auswählen
# -*- coding: iso-8859-1 -*-
import wx
class panel_2(wx.Panel):
def __init__(self,parent,id = -1,pos = wx.Point(0,0),size = wx.Size(190,95),style = wx.TAB_TRAVERSAL,name = 'panel'):
pre=wx.PrePanel()
pre.Create(parent,id,pos,size,style,name)
self.PostCreate(pre)
self.VwXinit()
def VwXinit(self):
self.Show(True)
self.tx_2 = wx.TextCtrl(self,-1,"",wx.Point(40,40),wx.Size(100,21))
self.Bind(wx.EVT_TEXT,self.tx_2_VwXEvOnText,self.tx_2)
self.Refresh()
return
def VwXDelComp(self):
return
def tx_2_VwXEvOnText(self,event): #init function
inp = self.tx_2.GetValue()
print ':1', inp
# Ab hier funtioniert es nicht mehr.
# ich finde den Bezug auf tx_1 aus dem file frame1.py nicht mehr
self.tx_1.SetValue(inp) # !! DAS FUNKTIONIERT NICHT !!
return #end function
Ich hoffe das es nicht zu viel code ist. Kleiner habe ich es nicht hinbekommen.