Как мне установить собственный курсор?
Я хочу установить собственную иконку курсора, которая должна меняться при наведении на определённый объект или тип объекта
import sys
from PyQt5 import QtWidgets
class Test(QtWidgets.QWidget):
def __init__(self):
super().__init__()
self.resize(500, 500)
block = QtWidgets.QWidget(self)
block.resize(100, 100)
block.setStyleSheet('background:red;cursor : url("1.png"), auto;')
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
w = Test()
w.show()
sys.exit(app.exec_())
Ответы (2 шт):
cursor : QCursor https://doc.qt.io/qt-5/qwidget.html#cursor-prop
Это свойство содержит форму курсора для этого виджета. Курсор мыши примет эту форму, когда окажется над этим виджетом.
QWidget.setCursor(const QCursor &)
import sys
from PyQt5 import QtWidgets
from PyQt5.Qt import *
class Test(QtWidgets.QWidget):
def __init__(self):
super().__init__()
self.resize(500, 500)
block = QtWidgets.QWidget(self)
block.resize(100, 100)
# block.setStyleSheet('background:red; cursor: url("im.png"), auto;')
block.setStyleSheet('background:red;')
block.setCursor(QCursor(Qt.CrossCursor)) # <-----
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
w = Test()
w.show()
sys.exit(app.exec_())
Update
я засомневался, что мой первые ответ, это то что вы хотели. Вот второй вариант:
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
class Test(QtWidgets.QWidget):
def __init__(self):
super().__init__()
self.resize(500, 500)
block = QtWidgets.QWidget(self)
block.resize(100, 100)
block.setStyleSheet('background: #5f9;') #cursor : url("1.png"), auto;')
pixmap = QtGui.QPixmap('_+_.png').scaled(80, 80)
cursor = QtGui.QCursor(pixmap)
block.setCursor(cursor)
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
w = Test()
w.show()
sys.exit(app.exec_())
_+_.png
Класс QCursor позволяет создать объект курсора с изображением любой формы. Чтобы загрузить изображение, следует передать путь к файлу конструктору класса QPixmap. Для создания объекта курсора необходимо передать конструктору класса QCursor в первом параметре экземпляр класса QPixmap, а во втором и третьем параметрах - координаты "горячей" точки будущего курсора. Пример создания и установки пользовательского курсора: self.setCursor(QtGui.QCursor(QtGui.QPixmap("cursor.png"), 0, 0) ссылка
