日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

pyqt5-weidget-鼠标操作(鼠标形状、鼠标跟踪,QCursor)

發(fā)布時間:2024/1/1 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pyqt5-weidget-鼠标操作(鼠标形状、鼠标跟踪,QCursor) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、設(shè)置鼠標(biāo)形狀

通過向setCursor()方法傳遞不同的枚舉值,控制鼠標(biāo)在其控件內(nèi)的形狀:


各個枚舉值的效果:

from PyQt5.Qt import * import sysapp = QApplication(sys.argv) window = QWidget() window.setWindowTitle("自定義鼠標(biāo)形狀") window.resize(100,100)################通過setCursor()方法選擇預(yù)設(shè)的鼠標(biāo)樣式############### window.setCursor(Qt.BusyCursor) ################通過setCursor()方法選擇預(yù)設(shè)的鼠標(biāo)樣式############### window.show() sys.exit(app.exec_())

二、通過QCursor對象自定義鼠標(biāo)形狀

from PyQt5.Qt import * import sysapp = QApplication(sys.argv) window = QWidget() window.setWindowTitle("自定義鼠標(biāo)形狀") window.resize(100,100) ################通過setCursor()方法自定義鼠標(biāo)樣式############### pixmap = QPixmap(".\over_move.png") # pixmap 是 QPixmap()的實(shí)例化,QPixmap()類用于圖片的顯示 new_pixmap = pixmap.scaled(30,30) # scaled方法返回自定義尺寸的副本 # cursor=QCursor(new_pixmap) # 實(shí)例化QCursor()對象,參數(shù)為QPixmap對象 cursor=QCursor(new_pixmap,0,0) # 可選參數(shù)指定圖片的的哪個像素點(diǎn)作為鼠標(biāo)的點(diǎn)擊點(diǎn) window.setCursor(cursor) # def setCursor(self, Union, QCursor=None, Qt_CursorShape=None): # real signature unknown; restored from __doc__ # """ setCursor(self, Union[QCursor, Qt.CursorShape]) """ # pass # 觀察setCursor方法內(nèi)部:1)通過枚舉值選擇預(yù)設(shè)的鼠標(biāo)形狀2)通過Qcursor類的實(shí)例化對象傳遞鼠標(biāo)形狀 ################通過setCursor()方法自定義鼠標(biāo)樣式###############window.show() sys.exit(app.exec_())

三、鼠標(biāo)跟蹤
默認(rèn)情況下,在一個控件內(nèi),只有當(dāng)鼠標(biāo)按鍵按下時才會接受鼠標(biāo)事件傳遞的消息。
可以通過setMouseTracking(True)方法修改控件的鼠標(biāo)跟蹤狀態(tài)使得即使沒有按下鼠標(biāo)也能跟蹤鼠標(biāo)。
利用實(shí)時獲取的鼠標(biāo)位置可以實(shí)現(xiàn)一定功能:本例中設(shè)計了鍵盤control鍵組合鼠標(biāo)光標(biāo)在窗口中移動標(biāo)簽:

from PyQt5.Qt import * import sys class MyWin(QWidget):def __init__(self):super(MyWin, self).__init__()self.control=Falsedef keyPressEvent(self, event):if (event.key() == Qt.Key_Control):self.control=Truedef keyReleaseEvent(self,event):if (event.key() == Qt.Key_Control):self.control = Falsedef mouseMoveEvent(self, event):#重載mouseMoveEvent方法,監(jiān)聽鼠標(biāo)移動,默認(rèn)情況下只有當(dāng)鼠標(biāo)被點(diǎn)擊時才會觸發(fā)鼠標(biāo)事件,從而被該方法監(jiān)聽到print("鼠標(biāo)位置 ",event.localPos().x(),event.localPos().y())################案例############## label默認(rèn)位置:(50, 50)# label隨鼠標(biāo)指針位置改變而改變# 利用control鍵組合鼠標(biāo)光標(biāo)控制標(biāo)簽移動if self.control == True:label.move(event.localPos().x(),event.localPos().y())################案例#############app=QApplication(sys.argv) window=MyWin() window.setWindowTitle("鼠標(biāo)移動") window.resize(100,100) window.setMouseTracking(True) # 參數(shù)為True時,當(dāng)鼠標(biāo)進(jìn)入window控件內(nèi)便處于跟蹤狀態(tài),即使不點(diǎn)擊鼠標(biāo)也會發(fā)射鼠標(biāo)事件消息 # 默認(rèn)情況下,鼠標(biāo)處于非跟蹤狀態(tài) print(window.hasMouseTracking()) # 查看鼠標(biāo)跟蹤狀態(tài)#################鼠標(biāo)跟蹤應(yīng)用案例################ label=QLabel(window) # 為窗口增加一個子控件 label.setText("這是一個標(biāo)簽") label.setStyleSheet("background-color:cyan;") label.move(50,50)#################鼠標(biāo)跟蹤應(yīng)用案例################window.show() sys.exit(app.exec_())

總結(jié)

以上是生活随笔為你收集整理的pyqt5-weidget-鼠标操作(鼠标形状、鼠标跟踪,QCursor)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。