03.PyQt5键盘鼠标事件处理

鼠标事件

1.鼠标移入窗口,子label1的boder加粗,鼠标移出,border恢复。
2.label2跟随鼠标移动。
3.鼠标移入label1中,变cross风格

import sys
from PyQt5.Qt import *
class App(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle('event')
        self.setGeometry(0,0,500,500)
        self.label()
        self.label2()
        self.setMouseTracking(True)

    def label(self):
        label=QLabel(self)
        label.setGeometry(150, 150, 200, 200)
        label.setStyleSheet('border:1px solid green')
        label.setCursor(Qt.CrossCursor)
        label.setObjectName('1')
        # label.setCursor(QCursor=)
    def label2(self):
        label2=QLabel(self)
        label2.setText('hello')
        label2.setObjectName('2')
    def enterEvent(self, QEvent):
        a=self.findChild(QLabel)
        a.setStyleSheet('border:10px solid green')
    def leaveEvent(self,QEvent):
        a = self.findChild(QLabel)
        a.setStyleSheet('border:1px solid green')
    def mouseMoveEvent(self, qme):
        a=self.findChild(QLabel,'2')
        a.move(qme.localPos().x(),qme.localPos().y())
        print(self.findChildren(QLabel))
if __name__ == '__main__':
    app=QApplication(sys.argv)
    window=App()
    window.show()
    sys.exit(app.exec_())

当用户点击子标签label时,子标签边框变红并加粗。(childAt的使用

import sys
from PyQt5.Qt import *
class App(QWidget):
    def __init__(self):
        super().__init__()
        self.setGeometry(0,0,500,500)
        self.setWindowTitle('mouse event')
        self.label()
        self.setMouseTracking(True)
    def label(self):
        label=QLabel(self)
        label.resize(300,300)
        label.move(100,100)
        label.setStyleSheet('border:1px solid green;')
    def mousePressEvent(self,qme):
        print(qme.x(),qme.y())
        if self.childAt(qme.x(),qme.y()) is not None:
            self.findChild(QLabel).setStyleSheet('border:10px solid red;')
        else:
            self.findChild(QLabel).setStyleSheet('border:1px solid green;')
if __name__ == '__main__':
    app=QApplication(sys.argv)
    window=App()
    window.show()
    sys.exit(app.exec_())

通过内容框移动界面

import sys
from PyQt5.Qt import *
class App(QWidget):
    def __init__(self):
        super().__init__()
        self.resize(500,500)
        self.setWindowTitle('mouse event')
        self.setMouseTracking(True)
        self.control=False
        self.start_x =0
        self.start_y = 0
    def mousePressEvent(self,qme):
        if qme.button()==Qt.LeftButton:
            self.control = True
            self.start_x = self.x() - qme.globalX()
            self.start_y = self.y() - qme.globalY()
    def mouseMoveEvent(self,qme2):
        if self.control:
            new_x = qme2.globalX() + self.start_x
            new_y = qme2.globalY() + self.start_y
            self.move(new_x,new_y)
    def mouseReleaseEvent(self,qme):
        self.control = False
if __name__ == '__main__':
    app=QApplication(sys.argv)
    window=App()
    window.show()
    sys.exit(app.exec_())

键盘事件

1.当用户键盘输入CTRL加c时,label文本为CTRL加c

import sys
from PyQt5.Qt import *
class App(QWidget):
    def __init__(self):
        super().__init__()
        self.setGeometry(0,0,500,500)
        self.setWindowTitle('keybord event')
        self.label()
    def label(self):
        label=QLabel(self)
        label.resize(300,300)
        label.move(100,100)
        label.setStyleSheet('border:1px solid green;')
    def keyPressEvent(self, qke):
        if qke.modifiers()==Qt.ControlModifier and qke.key()==Qt.Key_C:
            a=self.findChild(QLabel)
            a.setText('ctrl+c')
if __name__ == '__main__':
    app=QApplication(sys.argv)
    window=App()
    window.show()
    sys.exit(app.exec_())
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值