鼠标事件
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_())