2016-05-11 2 views
0

Часть моего приложения создает сложный отчет, требующий некоторого времени для генерации. Поскольку это может быть несколько минут, я хотел бы поставить BusyCursor(), чтобы убедить людей, что-то происходит. Проблема в том, что мне нужно запустить ее в одном модуле и закончить ее в другом. Это связано с тем, что он создает несколько отчетов, включая PDF для немедленного просмотра, а другой - с соответствующими файлами CSV для последующего использования.wxPython - Начало и конец BusyCursor

+0

вы бежите эти «другие» модули потоков, потому что в какой-то момент, вы собираетесь вернуться в 'основной цикл ', когда вы можете отменить (del или EndBusyCursor в зависимости от вашего wx)' BusyCursor' –

ответ

1

WxPython имеет класс wx.StockCursor. Этот класс может создать пользовательский курсор и установить его в область окна. Все курсоры доступно на: http://www.wxpython.org/docs/api/wx.Cursor-class.html

Вы можете использовать этот пример кода:

import wx 

class TestFrame(wx.Frame): 

    def __init__(self, parent): 
     wx.Frame.__init__(self, None) 
     self.SetBackgroundColour("#FFFFFF") 
     self.rootSizer = wx.BoxSizer(wx.VERTICAL) 

     self.rootSizer.Add((80, 80)) # Spacer 
     self.buttonActive = wx.Button(self,-1,"Activate",size=(100,100)) 
     self.buttonActive.Bind(wx.EVT_BUTTON, self.OnActivate) 
     self.rootSizer.Add(self.buttonActive,0,wx.ALIGN_CENTER) 

     self.rootSizer.Add((80,80)) # Spacer 
     self.buttonDisable = wx.Button(self,-1, "Disable", size=(100,100)) 
     self.buttonDisable.Bind(wx.EVT_BUTTON, self.OnDisabled) 
     self.rootSizer.Add(self.buttonDisable,0,wx.ALIGN_CENTER) 

     self.SetSizer(self.rootSizer) 

    def OnActivate(self,evt): 
     print "Activate" 
     self.SetCursor(wx.StockCursor(wx.CURSOR_WAIT)) 

    def OnDisabled(self, evt): 
     print "Disabled" 
     self.SetCursor(wx.StockCursor(wx.CURSOR_ARROW)) 


if __name__ == '__main__': 

    app = wx.App(None) 
    frame = TestFrame(None) 
    frame.Show() 
    app.MainLoop() 
+0

. Это работало после определенного количества реструктуризации кода, так как оба диалогового окна и time.sleep() отображают блокировку обновлений курсора! – OldSteve