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_())