2017-04-03 54 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)