wxPython - 开始和结束 BusyCursor

wxPython - Begin and End BusyCursor

我的应用程序的一部分生成了一份复杂的报告,需要一些时间才能生成。由于这可能需要几分钟时间,所以我想设置一个 BusyCursor() 以确保人们正在发生某些事情。我遇到的问题是我需要在一个模块中启动它并在另一个模块中结束它。这是因为它会生成大量报告,包括供立即查看的 PDF 和另一个带有关联 CSV 文件供后续使用的报告。

wxPython 有 class wx.StockCursor。 class 可以创建自定义光标并设置到 window 区域。所有游标都可用: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()