У меня есть настольное приложение среднего размера, созданное с помощью wxPython
. Я хочу реализовать объект session
в этом приложении. После некоторого времени бездействия приложение должно автоматически вывести пользователя из системы и отобразить экран входа в систему. Каким будет лучший способ сделать это в wxPython
?wxPython session timeout
Приложение использует wxPython 2.8.12.1
с Python 2.7
в пределах Windows 8, 7, XP
.
EDIT 1
Связывание EVT_MOTION
с wx.Frame
и wx.Panel
не работает. Он работает, если я связываю EVT_MOTION
со всеми отдельными объектами. Есть ли способ получить событие, вырвавшееся из внешнего родителя (wx.Frame
)?
import wx
class MyFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, -1, "Checking EVT_MOTION with Frame")
panel = wx.Panel(self, -1)
sizer = wx.BoxSizer(wx.VERTICAL)
panel.SetSizer(sizer)
sizer.Add(wx.Button(panel, -1, "Button 1"), 1, wx.EXPAND)
sizer.Add(wx.Button(panel, -1, "Button 2"), 1, wx.EXPAND)
sizer.Add(wx.Button(panel, -1, "Button 3"), 1, wx.EXPAND)
self.Bind(event=wx.EVT_MOTION, handler=self.OnMotion)
self.Show()
def OnMotion(self, event):
print "EVT_MOTION: " + str(event.GetEventObject())
if __name__ == '__main__':
app = wx.App(False)
frame = MyFrame()
app.MainLoop()
У меня есть много панелей с множеством кнопок и других элементов управления. Большинство из них уже связаны с некоторыми событиями. Как я могу достичь этого, не добавляя код таймера для событий каждого элемента управления? Будет ли он работать, если я напрямую свяжу ключевое слово и нажав события на самый внешний кадр? Но снова у меня есть некоторые элементы управления, которые останавливают распространение событий. – arvinchhi
Я бы просто привязал событие EVT_MOTION к панели кадра или верхнего уровня. Это должно работать для большинства вещей, так как я ожидаю, что пользователь будет перемещать мышь во время использования приложения. Большинство тайм-аутов составляют не менее 5 минут и обычно 10 или 15, поэтому это действительно не должно быть проблемой. –
Спасибо, я попробую его и дам вам знать результаты :) – arvinchhi