2017-04-03 55 views
1

我有一个.bmp图像,我想用它作为我的GUI的光标。 QCursor Documentation暗示这是可能的(“用你自己的位图创建一个游标,或者使用QCursor构造函数,该构造函数需要一个位图和一个掩码或者一个构造函数,它将一个像素图作为参数”),但我似乎无法得到它我得到'TypeError:QCursor():当我尝试在我的位图中使用建议的模块时,参数1有意想不到的类型'str''。这应该怎么做?PyQt4 - 将光标更改为自定义图像

下面是产生所述错误的代码。文档还建议将一个alpha掩码和另外两个值传递给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() 
+0

你可以给我们一些代码咀嚼吗?作为一个赌注,我会说你正在给你的bmp的路径字符串直接给QCursor的构造函数。如果是这样,请尝试在两者之间调用QPixmap构造函数。 –

+0

我已经为查询添加了一个基本的图形用户界面 - 在这种情况下,任何事情都可以为图像执行。 –

+1

感谢您的代码。你可以使用'image.bmp'路径实例化一个QPixmap,将它提供给QtGui.QCursor的构造函数,并将这个构造函数赋予一个小部件,让我们通过setCursor在__init__中说'self'? –

回答

2

如果它可以帮助任何人google搜索到了这里,并提供你可以给一个值whatEverColor是透明色。在__init__

pm = QtGui.QPixmap('image.bmp') 
bm = pm.createMaskFromColor(whatEverColor, Qt.MaskOutColor) 
pm.setAlphaChannel(bm) 
cursor = QtGui.QCursor(pm) 
self.setCursor(cursor)