반응형
파이썬. 클래스 상속과 생성자에 대하여. 그리고 super에 대하여 (tistory.com)
(위의 글 참고하면 배경지식 습득가능)
PyQt 모듈에는 매우 많은 다양한 클래스가 사전에 정의되어있음
이런 클래스에 정의된 메소드 중에, 유저가 메소드 오버라이드를 해서 재정의 해서 써야하는 케이스가 종종있다.
그 경우, PyQt에서 제공하는 클래스를 상속 받아서 임의의 클래스를 만들어야하는데 아래 예시를 보자.
QListWidget 클래스를 상속받아서 drop_list 라는 임의의 클래스를 정의하고 있다.
class drop_list(QListWidget):
def __init__(self,input):
super(drop_list,self).__init__(input)
#super().__init__(input) #이거랑 위에꺼랑 실행결과 같음
self.DragDropMode(QAbstractItemView.DragDropMode.DropOnly)
self.setAcceptDrops(True)
def dragEnterEvent(self,e):
print("drag in")
print(type(e.source()))
if type(e.source())==QTreeWidget:
e.accept()
else:
e.ignore()
def dropEvent(self,e):
print("drop Event")
self.addItem(e.source().currentItem().text(0))
QlistWidget 클래스를 사용할 때, 어느 위젯에다가 해당 QListWidget을 올려둘 건지 지정해서 사용해야한다.
class MyWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setupUI()
def setupUI(self):
self.setGeometry(1000, 200, 700, 300)
self.list = QListWidget(self)
self.list.setGeometry(420,0,100,100)
위 예시의 경우
QListWidget을 MainWindow에 올릴 것이기 때문에
self 를 파라미터로 주면서 객체를 생성하고 있다.
그 말은 즉슨, QListWidget의 경우 생성자에서 1개의 파라미터를 필요로 한다는 소리다.
따라서, QListWidget을 상속받아서 만든 drop_list 클래스의 생성자에서
super 클래스를 사용해서 QListWidget의 생성자를 호출하려면, 1개의 파라미터를 넘겨줘야 한다는 소리고..
그래서 처음 예시코드와 같은 형태로 클래스의 생성자를 정의하는 것이다.
반응형
'프로그래밍 관련 > PyQt' 카테고리의 다른 글
PyQt. TableWidget(기본) (1) | 2021.12.03 |
---|---|
PyQt . Context Menu (마우스 우클릭 메뉴 만들기) (0) | 2021.12.02 |
PyQt . Qcombobox (0) | 2021.11.16 |
PyQt.마우스이벤트 pyautogui 마우스제어 (0) | 2021.11.16 |
PyQt. 스크롤 관련 (0) | 2021.11.09 |