Auslesen und Setzen von Daten
Verfasst: Freitag 21. Dezember 2007, 16:07
Hi,
ich habe schon die nächste Frage.
Ich erstelle in einer Oberfläche verschiedene Elemente über eine Schleife. Wie kann ich später auf diese Elemente zugreifen? Ich muss dort eingegebene Daten auslesen und auch vorhandene Daten in die Elemente setzen können. Weiterhin gibt es verschiedene Abhängigkeiten zwischen den Elementen einer Zeile (z.B. Wird in der ChoiceBox "zwei" ausgewählt, muss das Feld "fz" aktiv sein).
Die Anzahl der Zeilen ist variabel. Wenn bei der Dateneingabe die Zeilen nicht ausreichen, werden neue hinzugefügt.
Wie kann ich die Daten in bestimmte Elemente setzen und auslesen? Mit Tk würde ich mir die Elemente in einer Liste speichern. Das geht ja auch mit wx. Gibt es da aber einen eleganteren Weg? Gibt es eine Möglichkeit, das Element, das einen Event ausgelöst hat, zu ermitteln (so etwas wie event.widget unter Tk)?
Mawilo
ich habe schon die nächste Frage.

Ich erstelle in einer Oberfläche verschiedene Elemente über eine Schleife. Wie kann ich später auf diese Elemente zugreifen? Ich muss dort eingegebene Daten auslesen und auch vorhandene Daten in die Elemente setzen können. Weiterhin gibt es verschiedene Abhängigkeiten zwischen den Elementen einer Zeile (z.B. Wird in der ChoiceBox "zwei" ausgewählt, muss das Feld "fz" aktiv sein).
Die Anzahl der Zeilen ist variabel. Wenn bei der Dateneingabe die Zeilen nicht ausreichen, werden neue hinzugefügt.
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: iso-8859-15 -*-
import wx
wx.SetDefaultPyEncoding("iso-8859-15")
class MainFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, -1, 'Test', size=(800, 800))
self.panel = wx.Panel(self)
self.mainsizer = wx.BoxSizer(wx.VERTICAL)
self.panel.SetSizer(self.mainsizer)
setButton = wx.Button(self.panel, -1, 'Daten laden')
getButton = wx.Button(self.panel, -1, 'Daten ausgeben')
self.Bind(wx.EVT_BUTTON, self.setData, setButton)
self.Bind(wx.EVT_BUTTON, self.getData, getButton)
self.mainsizer.Add(setButton)
self.mainsizer.Add(getButton)
for row in range(20):
self.setNewRow(row)
def setNewRow(self, row):
worktypes = ['', 'eins', 'zwei', 'drei']
nr = wx.StaticText(self.panel, -1, str(row), size=(30, 25), style=wx.BOTTOM)
tp = wx.Choice(self.panel, -1, size=(100, 25), choices=worktypes)
start = wx.TextCtrl(self.panel, -1, '', size=(50, 25))
end = wx.TextCtrl(self.panel, -1, '', size=(50, 25))
txt = wx.TextCtrl(self.panel, -1, '', size=(70, 25))
_from = wx.TextCtrl(self.panel, -1, '', size=(50, 25))
to = wx.TextCtrl(self.panel, -1, '', size=(50, 25))
fz = wx.CheckBox(self.panel, -1, '', size=(30, 25))
paid100 = wx.RadioButton(self.panel, -1, '', style=wx.RB_GROUP, size=(25, 25))
paid50 = wx.RadioButton(self.panel, -1, '', size=(30, 25))
paid25 = wx.RadioButton(self.panel, -1, '', size=(30, 25))
paid0 = wx.RadioButton(self.panel, -1, '', size=(30, 25))
sizer = wx.BoxSizer(wx.HORIZONTAL)
sizer.Add(nr)
sizer.Add(tp)
sizer.Add(start)
sizer.Add(end)
sizer.Add(txt)
sizer.Add(_from)
sizer.Add(to)
sizer.Add((10, 10))
sizer.Add(fz)
sizer.Add((10, 10))
sizer.Add(paid100)
sizer.Add((10, 10))
sizer.Add(paid50)
sizer.Add((10, 10))
sizer.Add(paid25)
sizer.Add((10, 10))
sizer.Add(paid0)
self.mainsizer.Add(sizer)
def setData(self, event=None):
pass
def getData(self, event=None):
pass
def main():
app = wx.PySimpleApp()
frame = MainFrame()
frame.Show()
app.MainLoop()
if __name__ == '__main__':
main()
Mawilo