【发布时间】:2011-12-16 14:47:46
【问题描述】:
我正在构建一个 Python 程序来搜索远程网站上的内容。 有时操作需要几秒钟,我相信用户不会注意到状态栏消息“搜索操作进行中”。 因此,我想更改鼠标光标以突出显示程序仍在等待结果。
这是我正在使用的方法:
def OnButtonSearchClick( self, event ):
"""
If there is text in the search text, launch a SearchOperation.
"""
searched_value = self.m_search_text.GetValue()
if not searched_value:
return
# clean eventual previous results
self.EnableButtons(False)
self.CleanSearchResults()
operations.SearchOperation(self.m_frame, searched_value)
我尝试了两种不同的方法,都在最后一行之前:
- wx.BeginBusyCursor()
- self.m_frame.SetCursor(wx.StockCursor(wx.CURSOR_WAIT))
它们都不起作用。
我在 GNU/Linux 下使用 KDE。这在 Gnome 下也不起作用
有什么提示吗?谢谢
【问题讨论】:
-
SetStockCursor 应该可以工作。您是否尝试过任何其他默认光标?也许 CURSOR_WAIT 在您的特定 Linux 风格上不可用。
-
我正在使用 SetCursor(wx.StockCursor(wx.CURSOR_WAIT)),抱歉打错了,我更正了问题。是的,我正在尝试其他游标,但都不起作用。
-
焦点可能是个问题。您正在为定义事件处理程序的类以外的其他对象设置光标(
self.m_frame是什么?)它可能因平台而异,但您为其设置光标的 wx.Window 通常必须具有焦点,并且鼠标指针必须在它上面才能显示设置的光标。 -
self.m_frame 是 GUI 的 wx 框架。我没有直接为我的类继承 wx.Frame(我正在使用 XRC 并且更喜欢以这种方式工作)。当我尝试这段代码时,鼠标指针(显然)在框架上
标签: python wxpython mouse-cursor