파이썬
[pyside2] 위젯을 활용하여 반복 되는 형식 집어넣기
mistive
2020. 4. 1. 10:22
서론
만들어보자
만들자~
일단 대충 이런 폼을 하나 만들었다.
그리고 "여기"에 저것들을 왕왕 넣을 것이다.
이런 식으로 말이다.
이렇게 하기 위해서는 main.py에서 여러가지 작업을 해줘야한다.
1. class 생성
2. layout생성
3. 반복 생성 함수 만들기
1번 먼저 해보자
from ui_rightCar import Ui_rightCar
class rightCar(QFrame, Ui_rightCar):
def __init__(self, parent=None):
super(rightCar, self).__init__(parent)
self.setupUi(self)
이 세상 간단함이 아니다.
*.ui 파일로 만든 ui_*.py 파일을 불러와 setup해주는 함수를 만든다.
2. layout 생성
self.ui.layoutMonitor = QGridLayout(self.ui.BoxMonitor)
self.ui.layoutMonitor.setSpacing(0) #각 객체 사이의 여백을 설정(Horizental, Vertical 따로 설정할 수 있는 함수도 있다)
self.ui.layoutMonitor.setAlignment(Qt.AlignBottom)
self.ui.layoutMonitor.setContentsMargins(0,0,0,0) #객체 하나하나의 여백을 설정
main.py에 layoutMonitor를 QGridLayout 객체를 만들고 그 parent를 BoxMonitor라는 GroupBox의 Layout으로 설정해준다.
그리고
def carMonitoring(self):
self.CAR_NUM = 30
self.carLList = []
self.carRList = []
self.carCList = []
for floor in range(0, int(self.CAR_NUM/2)):
self.carLList.append(leftCar())
self.carRList.append(rightCar())
self.carCList.append(centerCar())
self.ui.layoutMonitor.addWidget(self.carLList[floor], floor, 0, 1, 1)
self.ui.layoutMonitor.addWidget(self.carCList[floor], floor, 1, 1, 1)
self.ui.layoutMonitor.addWidget(self.carRList[floor], floor, 2, 1, 1)
이런식으로 함수를 만들어주면 된다.
관리를 편하게 하기 위해 만든 객체들은 list에 각각 넣어주고,
for문을 반복하면서 원하는 위치에 layout의 addWidget함수를 이용하여 추가해준다.
그럼 끗~!
역시 개발은 다하고 나면 별거 아닌데 처음 할 때는 힘든 듯 하다.
분명 객체를 이용하는 거라 방법이 있을 거라고 생각하고 이것저것 해봤는데 layout을 생성해서 layout에 추가하는 것을 생각을 못해 시간을 쬐까 잡아먹었다. 아직 갈 길이 멀다 ㅎ