Ich bin neu in Python und habe noch so meine Probleme. In meinem
Programm habe ich unter anderem die Module "wxPanel1" und "wxPanel4".
1.) Ich möchte von wxPanel1 aus eine Methode in wxPanel4 ausführen.
2.) Ich möchte auf ein wxTextCtrl-Feld in wxPanel4 von wxPanel1 aus
zugreifen.
Beides bekomme ich zur Zeit leider noch nicht hin.
Vielleicht könnt Ihr mir weiter helfen.
Modul wxPanel4.py
Code: Alles auswählen
#Boa:FramePanel:wxPanel4
from wxPython.wx import *
import daten
import serial
[wxID_WXPANEL4, wxID_WXPANEL4BUTTON_GETINFO, wxID_WXPANEL4GAUGE1,
wxID_WXPANEL4TEXTPARAMETER,
] = map(lambda _init_ctrls: wxNewId(), range(4))
class wxPanel4(wxPanel):
def _init_utils(self):
# generated method, don't edit
pass
def _init_ctrls(self, prnt):
# generated method, don't edit
wxPanel.__init__(self, id=wxID_WXPANEL4, name='', parent=prnt,
pos=wxPoint(193, 233), size=wxSize(800, 460),
style=wxTAB_TRAVERSAL)
self._init_utils()
self.SetClientSize(wxSize(792, 426))
self.textParameter = wxTextCtrl(id=wxID_WXPANEL4TEXTPARAMETER,
name='textParameter', parent=self, pos=wxPoint(8, 40),
size=wxSize(784, 384), style=wxTE_MULTILINE,
value='noch keine Daten ausgelesen')
self.textParameter.SetToolTipString('Hier werden die ausgelesenen Parameter angezeigt.')
self.button_getInfo = wxButton(id=wxID_WXPANEL4BUTTON_GETINFO,
label='>>> Informationen auslesen', name='button_getInfo',
parent=self, pos=wxPoint(8, 8), size=wxSize(144, 23), style=0)
self.button_getInfo.SetToolTipString('Informationen aus dem Automaten holen')
EVT_BUTTON(self.button_getInfo, wxID_WXPANEL4BUTTON_GETINFO,
self.OnButton_getinfoButton)
self.gauge1 = wxGauge(id=wxID_WXPANEL4GAUGE1, name='gauge1',
parent=self, pos=wxPoint(168, 13), range=100, size=wxSize(464,
16), style=wxGA_HORIZONTAL, validator=wxDefaultValidator)
def __init__(self, parent, id, pos, size, style, name):
self._init_ctrls(parent)
#--Informationen auslesen--------------------------------------------
def OnButton_getinfoButton(self, event):
try:#Schnittstelle öffnen
ser=serial.Serial(daten.port, daten.baudrate, daten.bytesize,
daten.parity, daten.stopbits, daten.timeout, daten.xonxoff,
daten.rtscts)
except:
#Fehlermeldung wenn der Com-Port nicht geöffnet werden kann
dlg = wxMessageDialog(self, 'Schnittstellenport kann nicht geöffnet werden.\nDie Schnittstelle wird evtw. bereits von einem anderen Programm verwendet.',
'Fehlermeldung', wxOK | wxICON_INFORMATION)
try:
dlg.ShowModal()
finally:
dlg.Destroy()
return
range=158 #Anzahl der erwarteten Zeilen
position=0
self.gauge1.SetRange(range)
self.textParameter.Clear() #alter Feldinhalt löschen
ser.write("get_para") #Kommando "Parameterliste anfordern"
while 1:
Text = ser.readline()
if not Text: break
self.textParameter.WriteText(Text)
position += 1
if position > 158: position = 158
self.gauge1.SetValue(position)
ser.close() #Schnittstelle schliessen
Bemerkung="Anzahl der Zeilen: " + str(position)
self.textParameter.WriteText(Bemerkung)
#empfangene Daten in einer Datei speichern
dlg = wxFileDialog(self, "Datei auswaehlen", ".", "", "*.*", wxOPEN)
try:
if dlg.ShowModal() == wxID_OK:
filename = dlg.GetPath()
# Your code
self.textParameter.SaveFile(filename)
self.FileName=filename
finally:
dlg.Destroy()
Code: Alles auswählen
#Boa:FramePanel:wxPanel1
#Karteikarte Informationen
from wxPython.wx import *
from wxPython.grid import *
from wxPanel4 import *
import wxDialog3
import daten
import serial
...
...
class wxPanel1(wxPanel):
...
...
#--Informationen auslesen---------------------------------------------
def OnButton_getDaten(self, event):
wxPanel4.OnButton_getinfoButton(self, event)
#event.Skip()
#--Feldinhalt löschen---------------------------------------------
def OnButton_delDaten(self, event):
wxPanel4.textParameter.Clear()
#event.Skip()
Danke!
Grüße
Markus