HWK hat geschrieben:Liegen die TextControls wirklich in einem Panel? Die Tabulator-Taste "funktioniert" nämlich nur in Dialogen oder Panels.
OK, anbei die vollsändige __init__ Prozedur des Panels:
Code: Alles auswählen
class PanelEingabeSpieltag(wx.Panel):
def __init__(self, parent, id=-1, spielplan=None, spieltag=0):
wx.Panel.__init__(self, parent, -1, style=wx.WANTS_CHARS)
self._lblSpieltag = wx.StaticText(self, -1, '')
self._lblSpieltag.SetFont(wx.Font(14, wx.SWISS, wx.NORMAL, wx.BOLD))
self.mainsizer = wx.BoxSizer(wx.VERTICAL)
self.mainsizer.Add(self._lblSpieltag, 0, wx.ALIGN_CENTER_HORIZONTAL |
wx.TOP, 10)
self.mainsizer.Add(wx.StaticLine(self, -1), 0, wx.EXPAND | wx.TOP |
wx.BOTTOM, 5)
self._lblHeim = {}
self._lblGast = {}
self._ctrlToreHeim = {}
self._ctrlToreGast = {}
hbox = {}
for i in range(1, 10):
self._lblHeim[i] = wx.StaticText(self, -1, '', size=(120, -1))
self._lblGast[i] = wx.StaticText(self, -1, '', size=(120, -1))
self._ctrlToreHeim[i] = wx.TextCtrl(self, -1, '', size=(30, -1),
validator=NumberValidator())
self._ctrlToreHeim[i].AcceptsFocus = True
self._ctrlToreHeim[i].AcceptsFocusFromKeyboard = True
self._ctrlToreGast[i] = wx.TextCtrl(self, -1, '', size=(30, -1),
validator=NumberValidator())
self._ctrlToreGast[i].AcceptsFocus = True
self._ctrlToreHeim[i].AcceptsFocusFromKeyboard = True
self._ctrlToreHeim[i].Enable(False)
self._ctrlToreGast[i].Enable(False)
hbox[i] = wx.BoxSizer(wx.HORIZONTAL)
hbox[i].Add(self._lblHeim[i], 0, wx.LEFT | wx.TOP, 3)
hbox[i].Add(wx.StaticText(self, -1, '-'), 0, wx.TOP, 3)
hbox[i].Add(self._lblGast[i], 0, wx.RIGHT | wx.LEFT | wx.TOP, 3)
hbox[i].Add(self._ctrlToreHeim[i], 0, wx.LEFT, 5)
hbox[i].Add(self._ctrlToreGast[i], 0, wx.RIGHT, 5)
self.mainsizer.Add(hbox[i], 0, wx.TOP, 5)
self.mainsizer.Add(wx.StaticLine(self, -1), 0, wx.EXPAND | wx.TOP, 5)
self.ChangeView(spielplan, spieltag)
Anmerkung: Ich weiss das die Controls hier noch deaktiviert sind. Zuerst soll der Anwender ja den Spieltag auswählen, danach werden sie aktiviert. Obwohl sie in einem Panel liegen, klappt das nicht mit der Tabtaste
HWK hat geschrieben:Übrigens: Zum Speichern der Ctrls wäre doch eine Liste einfacher als ein Dictionary.
Nicht in diesem Fall, oder ich bin zu blöd

. Ich muss die Controls mehrfach durchlaufen z.B. wenn sie mit Werten gefüllt werden (in der init-Prozedur werden sie ja nur erzeugt). Und dann muss ich diese mit dem Spielplan vergleichen ob das Spiel schon stattgefunden hat. Falls ja, Ergebnis anzeigen, falls nein, controlls leeren. Da ist es IMHO einfacher wenn ich bei beiden (Spielplan/Controls) einen eindeutigen Zeiger hab.
HWK hat geschrieben:Zur Namensgebung von Variablen schau Dir einmal die PEP8 an.
Ja ne is klar

Habe ich bereits gemacht und eigentlich auch verinnerlicht. Aber dann habe ich wxPython benutzt und voll den Überblick über die Konventionen verloren ...
Für sinnvolle Vorschläge bezüglich der vermischten Namenskonvention wäre ich sehr dankbar
(Edit: Ich habe gerade selber gesehen das die Übergabe der id ans Panel irgendwie sinnlos ist, also bitte nicht mehr kritisieren *g*)