pywin, Handler für Button richtig verknüpfen?
Verfasst: Mittwoch 24. Juli 2013, 15:02
Hallo,
da ich ein Programm erweitern soll, dessen GUI mit Pywin erzeugt wurde, versuche ich mich gerade in die Materie einzuarbeiten. Mittlerweile habe ich herausgefunden, wie man Fenster, z.B. Dialoge erstellt und anzeigt. Leider gelingt es mir nicht, die eingefügten Controls (z.B. Buttons) auch zu nutzen.
Im Folgenden ein Minimalbeispiel eines Dialogs mit einem einzelnen Knopf:
Dabei ging ich davon aus, dass der Befehl HookCommand(Handler, id) bestimmt, was bei einem Klick auf den Button passieren soll - in diesem Fall also ein Aufruf von onButton(). Führe ich das Programm aus, wird jedoch nur ein einziges Mal bei der Initialisierung des Dialogs "Button pushed!" ausgegeben. Klickt man zu Laufzeit des Programms auf den Button, passiert leider gar nichts.
Hat jemand von euch eine Idee, was ich hier falsch gemacht habe?
Vielen Dank im Voraus und beste Grüße,
jochbein
da ich ein Programm erweitern soll, dessen GUI mit Pywin erzeugt wurde, versuche ich mich gerade in die Materie einzuarbeiten. Mittlerweile habe ich herausgefunden, wie man Fenster, z.B. Dialoge erstellt und anzeigt. Leider gelingt es mir nicht, die eingefügten Controls (z.B. Buttons) auch zu nutzen.
Im Folgenden ein Minimalbeispiel eines Dialogs mit einem einzelnen Knopf:
Code: Alles auswählen
from pywin.mfc import dialog
import win32ui
import win32con
def MakeDlgTemplate():
style = (win32con.DS_MODALFRAME |
win32con.WS_POPUP |
win32con.WS_VISIBLE |
win32con.WS_CAPTION |
win32con.WS_SYSMENU |
win32con.DS_SETFONT)
cs = (win32con.WS_CHILD |
win32con.WS_VISIBLE)
dlg = [["Button Test",
(0, 0, 90, 30),
style,
None,
(8, "MS Sans Serif")],
]
return dlg
class TestDialog(dialog.Dialog):
def OnInitDialog(self):
rc = dialog.Dialog.OnInitDialog(self)
self.pbutton = win32ui.CreateButton()
self.pbutton.CreateWindow("TestButton", win32con.BS_PUSHBUTTON | win32con.WS_VISIBLE , (10, 10, 120, 35), self, win32ui.IDC_BUTTON1)
self.HookCommand(self.onButton(), win32ui.IDC_BUTTON1)
return rc
def onButton(self):
print "Button pushed!"
def demo():
d = TestDialog (MakeDlgTemplate())
d.DoModal()
if __name__=='__main__':
demo()
Hat jemand von euch eine Idee, was ich hier falsch gemacht habe?
Vielen Dank im Voraus und beste Grüße,
jochbein