我有一个with open(...) as stream:
original = sys.stdout
sys.stdout = stream
try:
...
finally:
sys.stdout = original
,我在QGraphicsScene
内添加了QPushButtons
。有没有一种方法可以显示这些按钮的工具提示? QGraphicsProxyWidgets
有效,但是当我将鼠标悬停在按钮上时,什么也没有出现。我需要在setToolTip
上指定一些标志吗?
按钮创建代码的简化版本:
QGraphicsScene/View
谢谢!
答案 0 :(得分:1)
您必须将工具提示设置为QGraphicsProxyWidget
。
示例:
from PyQt5 import QtCore, QtWidgets
if __name__ == '__main__':
import sys
app = QtWidgets.QApplication(sys.argv)
scene = QtWidgets.QGraphicsScene()
view = QtWidgets.QGraphicsView(scene)
proxy = QtWidgets.QGraphicsProxyWidget()
button = QtWidgets.QPushButton("Press me :)")
proxy.setWidget(button)
proxy.setToolTip("Proxy toolTip")
scene.addItem(proxy)
view.show()
sys.exit(app.exec_())
答案 1 :(得分:0)
遗憾的是,在代理上设置工具提示也没有用,但是一位同事在我的代码中进行了进一步研究,发现为什么代理和按钮的工具提示都不起作用:我在QGraphicsView mouseMoveEvent
上设置了替代项,这可能会破坏悬停事件。添加...
else :
super(CustomGraphicsView, self).mouseMoveEvent(event)
...在mouseMoveEvent
覆盖结尾处解决了该问题。对不起,很抱歉,谢谢您的帮助!