1、设置鼠标形状:鼠标放置在不同控件上(有不同功能时)鼠标的形状是不一样的。
鼠标跟踪:鼠标在某一个控件上移动,则会向对应的控件对象发送一个消息,去调用具体的某一个方法,可以在方法里面监听鼠标的轨迹。
2、案例、自定义鼠标设置
app = QApplicaiton(sys.argv)window = QWidget()
window.setWindowTitle("鼠标操作")
window.resize(500, 500)label = QLabel(window)
label.setText("鼠标操作")
label.resize(200, 200)
label.setStyleSheet("background-color:cyan")label.setCursor(Qt.ForbiddenCursor)sys.exit(app.exct_())
自定义鼠标设置:
import sys
from PyQt5.Qt import *if __name__ == "__main__":app = QApplication(sys.argv)window = QWidget()window.setWindowTitle("鼠标操作")window.resize(500, 500)# 当鼠标在window空间内部,则鼠标变为繁忙状态#window.setCursor(Qt.BusyCursor)label = QLabel(window)label.setText("鼠标")label.resize(200, 200)label.setStyleSheet("background-color:cyan")# 第一个参数是一个独一无二的枚举值,第二个参数是一个QCursor对象pixmap = QPixmap(r"C:\Users\22104\Desktop\OIP-C.jpg")# 将缩放结果返回给外界,但图像并未改变new_pixmap = pixmap.scaled(20,20)# 鼠标对象需要一个图片对象,所以需要创建一个图片对象# 图像对象作为cursor的参数,可以使用str作为图形的路径# # (-1,-1)指图片的中心位置,中心位置放在那里,那里就有作用,0,0指左上角,20,20指右下角cursor = QCursor(new_pixmap, 20, 20)label.setCursor(cursor)window.show()sys.exit(app.exec_())
3、重置形状、获取鼠标:window.unsetCursor(),获取鼠标,就可以间接获取鼠标的图像、位置等信息。
cursor = QCursor(new_pixmap, 20, 20)label.setCursor(cursor)label.unsetCursor()window.show()sys.exit(app.exec_())
# 可以获取鼠标对象,获取它的位置# 返回一个鼠标对象print(label.cursor())# 设置鼠标的位置,鼠标位置是相比于整个桌面窗口current_cursor = label.cursor()print(current_cursor.pos())print(label.cursor().pos())# 鼠标会直接跑到桌面左上角current_cursor.setPos(0,0)
4、鼠标跟踪操作:不跟踪的时候,只有当鼠标左键处于按下状态,才会触发对应的鼠标事件;跟踪的情况下,当鼠标移动时,即使不按下左键,也会触发相应的事件。
当鼠标在控件内部移动时,才会调用控件的某一个事件方法。
import sys
from PyQt5.Qt import *class MyWindow(QWidget):def mouseMoveEvent(self, me):# 获取全局的坐标print("鼠标移动了!", me.globalPos())app = QApplication(sys.argv)
window = MyWindow()
window.setWindowTitle("鼠标操作")
window.resize(500, 500)
# 使鼠标处于跟踪状态
window.setMouseTracking(True)
print(window.hasMouseTracking())window.show()sys.exit(app.exec_())