В вашем примере я не вижу, как вы вызываете метод toolTip()
. Попробуйте это:
import sys
from PyQt5.QtCore import Qt, QPointF
from PyQt5.QtWidgets import (QGraphicsView, QGraphicsScene, QApplication,
QGraphicsEllipseItem, QGraphicsSceneHoverEvent,
QGraphicsSceneMouseEvent)
class MovableDisk(QGraphicsEllipseItem):
def __init__(self, top_left_x, top_left_y, radius):
super().__init__(0, 0, radius, radius)
self.setPos(top_left_x, top_left_y)
self.setBrush(Qt.red)
self.setAcceptHoverEvents(True)
self.setToolTip("Test") # < +++++
def hoverEnterEvent(self, event: 'QGraphicsSceneHoverEvent'):
QApplication.instance().setOverrideCursor(Qt.OpenHandCursor)
def hoverLeaveEvent(self, event: 'QGraphicsSceneHoverEvent'):
QApplication.instance().restoreOverrideCursor()
def mouseMoveEvent(self, event: 'QGraphicsSceneMouseEvent'):
new_cursor_position = event.scenePos()
old_cursor_position = event.lastScenePos()
old_top_left_corner = self.scenePos()
new_top_left_corner_x = new_cursor_position.x() - old_cursor_position.x() + old_top_left_corner.x()
new_top_left_corner_y = new_cursor_position.y() - old_cursor_position.y() + old_top_left_corner.y()
self.setPos(QPointF(new_top_left_corner_x, new_top_left_corner_y))
def mousePressEvent(self, event: 'QGraphicsSceneMouseEvent'): pass
def mouseDoubleClickEvent(self, event: 'QGraphicsSceneMouseEvent'): pass
def mouseReleaseEvent(self, event: 'QGraphicsSceneMouseEvent'):
self.setToolTip("pos:
x({}), y({})
" # < +++++
"".format(self.pos().x(), self.pos().y())) # < +++++
class MyView(QGraphicsView):
def __init__(self):
super().__init__()
self.scene = QGraphicsScene()
self.setScene(self.scene)
self.setSceneRect(0, 0, 250, 250)
self.disk = MovableDisk(50, 50, 20)
self.scene.addItem(self.disk)
if __name__ == '__main__':
app = QApplication([])
f = MyView()
f.show()
sys.exit(app.exec_())
Либо пакет не найден, либо компилятор сбит с толку. В последнем случае перезапуск иногда помогает. Затем выполните ручную сборку из всех пакетов по порядку.
Если это действительно невозможно найти, проверьте, доступны ли все пакеты (bpl и dcp) и dcu. Вам нужны оба.
Я бы проверил, чтобы убедиться, что вы пишете файлы .dcp для пакетов. После этого убедитесь, что в пути поиска каждого пакета есть запись для выходной папки .dcp.
Если это происходит, когда IDE пытается загрузить пакет: выходной каталог вашего пакета (где файлы * .bpl go) должен находиться в переменной среды PATH вашей системы. Пакеты представляют собой статически связанные библиотеки DLL, Windows должна быть в состоянии найти их для загрузки.
Если это происходит при сборке пакетов: любые / все ваши выходные каталоги DCP (куда идут файлы * .dcp) должны находиться в путь поиска зависимых проектов, чтобы компилятор мог найти скомпилированные пакеты. Вы также можете оставить каталог вывода DCP проекта пакета пустым - в этом случае используется глобальный каталог вывода DCP, установленный в Tools \ Options \ Library; зависимые проекты не должны включать его в свой путь поиска.