PySide/PyQt: 指向手形光标的实现?

2 投票
1 回答
850 浏览
提问于 2025-04-19 14:22

我有一个使用pyside制作的应用程序,里面有很多按钮、工具按钮、标签页等等。我希望当鼠标悬停或点击这些控件时,光标能变成“指向手”的样子。这就意味着我的代码里有很多类似这样的语句:

someWidget.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor)) 

这行代码相对比较长,看起来也不太好。 我可以把上面的代码封装成一个函数:

def hand_cursor(widget):
    widget.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))

这样的话,剩下的代码看起来就整洁多了:

hand_cursor(someWidget)

但是我还是得到处写那行代码。

有没有人知道有什么方法或者技巧,可以让我所有的按钮、标签栏等等都能在不重复写代码的情况下,显示“指向手”的光标呢?

1 个回答

1

我建议你先列出所有你想要这种行为的小部件,然后用一个循环来处理它们:

widgetsToChange = [someWidget, anotherWidget, ...]
for w in widgetsToChange:
  hand_cursor(w) 
  #or w.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))

你也可以使用 QApplication.setOverrideCursor(QCursor(Qt.WaitCursor)) 这个命令来改变整个应用程序的光标样式。

撰写回答