from PyQt5.QtWidgets import QWidget,QApplication,QLabel,QVBoxLayout
from PyQt5.QtCore import Qt
import sys
class 이벤트함수(QWidget):
def __init__(self):
super().__init__()
self.UI초기화()
def UI초기화(self):
self.label = QLabel('키를 입력하세요 \\n\\nESC: 종료 \\nF11: 위젯 300,
300위치로 옮기기 \\nF1: 라벨 텍스트 변경 \\n0: 위젯 100,100위치로 옮기기
\\n1: 위젯 추가')
self.label2 = QLabel()
self.vbox = QVBoxLayout()
self.vbox.addWidget(self.label,alignment=Qt.AlignCenter)
self.vbox.addWidget(self.label2)
self.setLayout(self.vbox)
self.setWindowTitle('Reimplementing Event Handler')
self.setGeometry(300, 300, 400, 200)
self.show()
def keyPressEvent(self,event):
if event.key() == Qt.Key_Escape:
self.close()
elif event.key() == Qt.Key_F11:
self.move(300, 300)
self.label.setText('키 입력하세요 \\n\\nESC: 종료 \\nF11: 위젯 300, 300위치로 옮기기 \\nF1: 라벨 텍스트 변경 \\n0: 위젯 100,100위치로 옮기기 \\n1: 위젯 추가')
elif event.key() == Qt.Key_F1:
self.label.setText("F1이 눌렸어요! 되돌아가길 원하시면 0번을 눌러주세요")
elif event.key() == Qt.Key_0:
self.move(100,100)
self.label.setText('키 입력하세요 \\n\\nESC: 종료 \\nF11: 위젯 300, 300위치로 옮기기 \\nF1: 라벨 텍스트 변경 \\n0: 위젯 100,100위치로 옮기기 \\n1: 위젯 추가')
def keyReleaseEvent(self,event):
if event.key() == Qt.Key_1:
self.label2 = QLabel('키가 눌렀다 떼어졌어요!')
self.vbox.addWidget(self.label2)
프로그램무한반복 = QApplication(sys.argv)
실행인스턴스 = 이벤트함수()
프로그램무한반복.exec_()
self.label = QLabel('키를 입력하세요 \\n\\nESC: 종료 \\nF11: 위젯 300,
300위치로 옮기기 \\nF1: 라벨 텍스트 변경 \\n0: 위젯 100, 100위치로 옮기기
\\n1: 위젯 추가')
대표적인 정의된 이벤트(슬롯)
def keyPressEvent(self, event):
if event.key() == Qt.Key_Escape:
self.close()
elif event.key() == Qt.Key_F11:
self.move(500, 500)
self.label.setText('키 입력하세요 \\n\\nESC: 종료 \\nF11: 위젯 500,\\
500위치로 옮기기 \\nF1: 라벨 텍스트 변경 \\n0: 위젯 100,\\
100위치로 옮기기 \\n1: 위젯 추가')
elif event.key() == Qt.Key_F1:
self.label.setText("F1이 눌렸어요! 되돌아가길 원하시면 0번을 눌러주세요")
elif event.key() == Qt.Key_0:
self.move(100, 100)
self.label.setText('키 입력하세요 \\n\\nESC: 종료 \\nF11: 위젯 300,\\
300위치로 옮기기 \\nF1: 라벨 텍스트 변경 \\n0: 위젯 100,\\
100위치로 옮\\n1: 위젯 추가')