QWidget鼠标操作

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_())
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

。七十二。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值