Seite 1 von 1
wxpython, key press event an modalen dialog senden
Verfasst: Freitag 13. November 2009, 16:58
von aba
hallo,
ich habe folgendes wxpython problem.
ich habe einen einfachen modalen dialog gestartet. falls der user nicht reagiert, möchte ich nach einem bestimmten timeout einen event senden der dem drücken der return taste entspricht.
ich habe leider nirgends gefunden, wie ich einen entsprechenden key event erzeugen kann - oder wie man das problem ggf umgehen kann.
mfg
aba
Verfasst: Freitag 13. November 2009, 18:10
von gerold
Hallo aba!
Willkommen im Python-Forum!
Vielleicht so...
Code: Alles auswählen
#!/usr/bin/env python
# coding: utf-8
import wx
wx.SetDefaultPyEncoding("utf-8")
class MyDialog(wx.Dialog):
def __init__(self, parent = None, title = "Example"):
wx.Dialog.__init__(self, parent, -1, title)
# Pseudo-Buttons :-)
ok_btn = wx.Button(self, wx.ID_OK, pos = (50, 50))
cancel_btn = wx.Button(self, wx.ID_CANCEL, pos = (50, 80))
# Timer aktivieren
self.timer = wx.Timer()
self.timer.Bind(wx.EVT_TIMER, self.on_timer)
self.timer.Start(3000, True)
def on_timer(self, event = None):
# Rückgabecode setzen und Dialog ausblenden
self.SetReturnCode(wx.ID_OK)
self.Hide()
def main():
app = wx.PySimpleApp()
d = MyDialog()
print "Rueckgabe:", d.ShowModal()
d.Destroy()
if __name__ == "__main__":
main()
mfg
Gerold

Verfasst: Samstag 14. November 2009, 01:45
von aba
hi gerold,
danke!! exakt was ich gesucht habe,
grüsse
aba
Verfasst: Samstag 14. November 2009, 18:40
von HWK
Statt
würde ich einfach
verwenden. Solange der Dialog nur Buttons besitzt, die ihn beenden, funktionieren beide Varianten sicher so, wie Du es möchtest. Wenn aber z.B. auch Texteingaben o.ä. möglich sind, kann der User ja durchaus längere Zeit mit dem Dialog beschäftigt sein. Man sollte dann also jedes Mal, wenn er eine Eingabe macht, den Timer zurücksetzen.
MfG
HWK