gorba hat geschrieben:[...] nun der unterschied ist zwischen:[...]
Das erste ist Pythonischer.
gorba hat geschrieben:[...]
Wieso kann man das auf 2 arten machen?[...]
Mal mein Interpretationsversuch. In C (in dem wxWidget geschrieben ist) wird ein event binding, an ein Widget, mit wx.EVT_XYZ gemacht. Die sind dort als Makros (#define EVT_...) definiert. Die Entwickler von wxPython habe sich wohl einfach gedacht, das die das mit übernehmen, das es Bestandteil von wxWidget ist. Da das aber total Unpythonisch ist (Wie vieles andere [1]), haben die ``Bind`` mit hinzugefügt. Intern macht ``Bind`` (Schätze ich mal) einfach ein ``wx.EVT_XYZ(...)`` daraus.
[1] Z.B. das spiel mit den ``id``s. Ist in neuern wxPython Versionen nicht mehr nötig; Außer in wenigen Ausnahmefällen wie z.B. bei der Benutzung von ``wx.AcceleratorTable`` wo man für die definierten ``accel``s immer ncoh ids braucht, damit man eine klare Zuordnung beim binding hat.
Z.B.:
Code: Alles auswählen
acell_id1 = wx.NewId()
accel = wx.AcceleratorTable([
# Applikation beenden
(wx.ACCEL_CTRL, wx.WXK_F4, acell_id1),
(wx.ACCEL_CTRL, ord('Q'), acell_id1)
])
self.SetAcceleratorTable(accel)
self.Bind(wx.EVT_MENU, self.OnAppClose, id=acell_id1)
lg