PyQt4 - изменить курсор на пользовательское изображение

У меня есть изображение.bmp, которое я хотел бы использовать в качестве курсора для моего графического интерфейса. Документация QCursor предполагает, что это возможно ("Чтобы создать курсор с вашим собственным растровым изображением, либо используйте конструктор QCursor, который принимает растровое изображение и маску, либо конструктор, который принимает растровое изображение в качестве аргументов"), но я не могу получить это работает, когда я получаю 'TypeError: QCursor(): аргумент 1 имеет неожиданный тип'str'', когда я пытаюсь использовать предложенный модуль с моим растровым изображением. Как это должно быть сделано?

Ниже приведен код, который выдает указанную ошибку. Документы также предлагают передать альфа-маску и два других значения в QCursor, но я не уверен, нужны ли они, и какими они должны быть, если они есть.

import sys
from PyQt4 import QtGui, QtCore

QtGui.QCursor('image.bmp')

class Window(QtGui.QMainWindow):

    def __init__(self):
        super(Window, self).__init__()
        self.setGeometry(50, 50, 500, 300)
        cursor = QtGui.QPixmap('image.bmp')
        self.setCursor(QtGui.QCursor(cursor))
        self.home()

    def home(self):
        btn = QtGui.QPushButton("Quit", self)
        btn.clicked.connect(QtCore.QCoreApplication.instance().quit)
        btn.resize(100,100)
        btn.move(100,100)
        self.show()


def run():
    app = QtGui.QApplication(sys.argv)
    GUI = Window()
    sys.exit(app.exec_())

run()

1 ответ

Решение

Если это может помочь кому-нибудь погуглить здесь, и при условии, что вы можете дать значение whatEverColor быть прозрачным цветом. В __init__:

pm = QtGui.QPixmap('image.bmp')
bm = pm.createMaskFromColor(whatEverColor, Qt.MaskOutColor)
pm.setAlphaChannel(bm)
cursor = QtGui.QCursor(pm)
self.setCursor(cursor)
Другие вопросы по тегам