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
wxpython, key press event an modalen dialog senden
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo aba!
Willkommen im Python-Forum!
Vielleicht so...
mfg
Gerold

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()
Gerold

Zuletzt geändert von gerold am Samstag 14. November 2009, 09:57, insgesamt 1-mal geändert.
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Stattwürde ich einfachverwenden. 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
Code: Alles auswählen
self.SetReturnCode(wx.ID_OK)
self.Hide()
Code: Alles auswählen
self.EndModal(wx.ID_OK)
MfG
HWK