class MainFrame(wx.Frame): def __init__(self): wx.Frame.__init__(self, None, title="Otter Share") panel = wx.Panel(self) nb = wx.Notebook(panel) tab1 = Tab(nb) tab2 = Tab(nb) tab3 = Tab(nb) tab4 = Tab(nb) nb.AddPage(tab1, "Tab1") nb.AddPage(tab2, "Tab2") nb.AddPage(tab3, "Tab3") nb.AddPage(tab4, "Tab4") # Set noteboook in a sizer to create the layout sizer = wx.BoxSizer() sizer.Add(nb, 1, wx.EXPAND) panel.SetSizer(sizer) self.tbIcon = TaskBarIcon(self) self.Bind(wx.EVT_ICONIZE, self.OnMinimize) self.Bind(wx.EVT_CLOSE, self.OnClose) self.Show() # Add some events to the keyboard #WinKeyboard.add_handler(print_event) #WinKeyboard.add_handler(screenshot_handler) #InputManager.add_hook(self.mouse.generate_hook()) # Start listening on input worker = None InputManager.add_input(WinMouse()) InputManager.add_input(WinKeyboard()) # Split the Message Pumping onto its own thread. if not worker: worker = threading.Thread(target=InputManager.listener()) worker.start() def OnClose(self, event): # Sends a stop pumping message InputManager.stop_pumping(threading.get_ident()) self.tbIcon.RemoveIcon() self.tbIcon.Destroy() self.Destroy() def OnMinimize(self, event): if self.IsIconized(): self.Hide()
class AppFrame(wx.Frame): def __init__(self): wx.Frame.__init__(self, None, -1, "", size=(1, 1), style=wx.FRAME_NO_TASKBAR | wx.NO_FULL_REPAINT_ON_RESIZE) self.setup() self.create_taskbar_icon() self.twitter = Twitter(self) def setup(self): if not os.path.exists(Constants.FOLDER_PATH): os.mkdir(Constants.FOLDER_PATH) def create_taskbar_icon(self): self.tbIcon = TaskBarIcon(self) self.tbIcon.Bind(wx.EVT_MENU, self.exit, id=wx.ID_EXIT) def open_keylist(self, event): keyListDlg = KeyListDialog(self) if keyListDlg.ShowModal() == wx.ID_OK: keyListDlg.Destroy() def open_twitter(self, event): webbrowser.open("https://twitter.com/DuvalMagic") webbrowser.open("https://twitter.com/GearboxSoftware") def start_taskbar_blinking(self): self.tbIcon.start_blinking() def get_browser_pin(self, url): dlg = wx.MessageDialog( self, "A browser needs to be open to get a twitter authorization pin", "Authorization pin", wx.YES_NO ) retCode = dlg.ShowModal() if retCode == wx.ID_YES: dlg.Destroy() webbrowser.open(url) pin = self.open_pin_dialog() return pin elif retCode == wx.ID_NO: self.close_dialog() def open_pin_dialog(self): pinDlg = wx.TextEntryDialog(self, "Twitter Pin:", "Pin Preferences", style=wx.OK | wx.CANCEL) retID = pinDlg.ShowModal() if retID == wx.ID_OK: pin = pinDlg.GetValue() if len(pin) > 0: pinDlg.Destroy() return pin else: pinDlg.Show() elif retID == wx.ID_CANCEL: self.close_dialog() def close_dialog(self): dlg = wx.MessageDialog( self, "This application needs to be authenticated with twitter to work correctly, closing application.", "Closing", wx.OK, ) retCode = dlg.ShowModal() if retCode == wx.OK: dlg.Destroy() self.exit(wx.EVT_MENU) def exit(self, event): self.tbIcon.RemoveIcon() self.tbIcon.Destroy() os._exit(0)
def create_taskbar_icon(self): self.tbIcon = TaskBarIcon(self) self.tbIcon.Bind(wx.EVT_MENU, self.exit, id=wx.ID_EXIT)
def __init__( self, parent=None, id=wx.ID_ANY, title='TaskBarIcon', pos=wx.DefaultPosition, size=wx.DefaultSize, style=wx.DEFAULT_FRAME_STYLE): wx.Frame.__init__(self, parent, id, title, pos, size, style) # add by wxFormBuilder ↓↓↓↓↓↓↓↓↓ no modify by code self.SetSizeHintsSz(wx.DefaultSize, wx.DefaultSize) bSizer1 = wx.BoxSizer(wx.VERTICAL) sbSizer1 = wx.StaticBoxSizer(wx.StaticBox(self, wx.ID_ANY, u"每天工作时间"), wx.VERTICAL) gSizer2 = wx.GridSizer(0, 4, 0, 0) self.m_staticText2 = wx.StaticText(sbSizer1.GetStaticBox(), wx.ID_ANY, u"早上:", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText2.Wrap(-1) gSizer2.Add(self.m_staticText2, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) self.am_start = wx.TextCtrl(sbSizer1.GetStaticBox(), wx.ID_ANY, u"08:30", wx.DefaultPosition, wx.DefaultSize, wx.TE_CENTRE) gSizer2.Add(self.am_start, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) self.m_staticText3 = wx.StaticText(sbSizer1.GetStaticBox(), wx.ID_ANY, u"-", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText3.Wrap(-1) gSizer2.Add(self.m_staticText3, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) self.am_end = wx.TextCtrl(sbSizer1.GetStaticBox(), wx.ID_ANY, u"12:00", wx.DefaultPosition, wx.DefaultSize, wx.TE_CENTRE) gSizer2.Add(self.am_end, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) self.m_staticText4 = wx.StaticText(sbSizer1.GetStaticBox(), wx.ID_ANY, u"下午:", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText4.Wrap(-1) gSizer2.Add(self.m_staticText4, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) self.pm_start = wx.TextCtrl(sbSizer1.GetStaticBox(), wx.ID_ANY, u"13:30", wx.DefaultPosition, wx.DefaultSize, wx.TE_CENTRE) gSizer2.Add(self.pm_start, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) self.m_staticText5 = wx.StaticText(sbSizer1.GetStaticBox(), wx.ID_ANY, u"-", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText5.Wrap(-1) gSizer2.Add(self.m_staticText5, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) self.pm_end = wx.TextCtrl(sbSizer1.GetStaticBox(), wx.ID_ANY, u"18:00", wx.DefaultPosition, wx.DefaultSize, wx.TE_CENTRE) gSizer2.Add(self.pm_end, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) sbSizer1.Add(gSizer2, 1, wx.EXPAND, 5) bSizer1.Add(sbSizer1, 1, wx.EXPAND, 5) gSizer3 = wx.GridSizer(0, 3, 0, 0) self.m_staticText6 = wx.StaticText(self, wx.ID_ANY, u"每多长时间提醒(分钟)", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText6.Wrap(-1) gSizer3.Add(self.m_staticText6, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) self.period = wx.TextCtrl(self, wx.ID_ANY, u"60", wx.DefaultPosition, wx.DefaultSize, wx.TE_RIGHT) gSizer3.Add(self.period, 0, wx.ALL | wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL, 5) self.m_staticText7 = wx.StaticText(self, wx.ID_ANY, u"min", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText7.Wrap(-1) gSizer3.Add(self.m_staticText7, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5) bSizer1.Add(gSizer3, 1, wx.EXPAND, 5) remind_time = wx.StaticBoxSizer(wx.StaticBox(self, wx.ID_ANY, u"提醒时间"), wx.VERTICAL) fgSizer4 = wx.FlexGridSizer(0, 2, 0, 0) fgSizer4.AddGrowableCol(1) fgSizer4.AddGrowableRow(1) fgSizer4.SetFlexibleDirection(wx.BOTH) fgSizer4.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_SPECIFIED) self.m_staticText16 = wx.StaticText(remind_time.GetStaticBox(), wx.ID_ANY, u"早上:", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText16.Wrap(-1) fgSizer4.Add(self.m_staticText16, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) self.am_lists = wx.StaticText(remind_time.GetStaticBox(), wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0) self.am_lists.Wrap(-1) fgSizer4.Add(self.am_lists, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5) self.m_staticText18 = wx.StaticText(remind_time.GetStaticBox(), wx.ID_ANY, u"下午:", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText18.Wrap(-1) fgSizer4.Add(self.m_staticText18, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_CENTER_HORIZONTAL, 5) self.pm_lists = wx.StaticText(remind_time.GetStaticBox(), wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0) self.pm_lists.Wrap(-1) fgSizer4.Add(self.pm_lists, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5) remind_time.Add(fgSizer4, 1, wx.EXPAND, 5) bSizer1.Add(remind_time, 1, wx.ALIGN_CENTER_HORIZONTAL | wx.EXPAND, 5) gSizer4 = wx.GridSizer(0, 2, 0, 0) self.reset = wx.Button(self, wx.ID_ANY, u"重置", wx.DefaultPosition, wx.DefaultSize, 0) gSizer4.Add(self.reset, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5) self.start_toggle = wx.Button(self, wx.ID_ANY, u"开始", wx.DefaultPosition, wx.DefaultSize, 0) gSizer4.Add(self.start_toggle, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_RIGHT, 5) bSizer1.Add(gSizer4, 0, wx.ALIGN_RIGHT, 5) self.SetSizer(bSizer1) self.Layout() self.Centre(wx.BOTH) # Connect Events self.reset.Bind(wx.EVT_BUTTON, self.OnReset) self.start_toggle.Bind(wx.EVT_BUTTON, self.OnStartToggle) # 记得最后处理这里 self.reset.Hide() # add by wxFormBuilder ↑↑↑↑↑↑↑↑↑ no modify by code self.dialog = MyDialog() self.SetIcon(wx.Icon('.importance\loadIcon.ico', wx.BITMAP_TYPE_ICO)) # 设置图标 self.Bind(wx.EVT_CLOSE, self.OnClose) # 关闭按钮 self.Bind(wx.EVT_ICONIZE, self.OnIconize) self.taskBarIcon = TaskBarIcon(self) # 设置程序为托盘形式 wx.Frame.SetMaxSize(self, size) # 最大尺寸 wx.Frame.SetMinSize(self, size) # 最小尺寸