반응형
728x170
PyQt5를 공부하다가 화면을 여러개 만들어서 할 수 있나? 를 고민했습니다
뭐 물론 가능할 것 같았습니다
layout을 생성해주는 방식으로 말이죠
하지만 그러면 보기에도 불편하고 퍼포먼스도 딱히 좋지 않을 것이라 생각했습니다
굳이 layout을 만들지 않고 1개의 레이아웃에 여러 옵션을 넣을 수 없을까?
그렇게 찾다가 tab을 찾게 되었습니다!
이런식으로 말이죠!
소스는 아래와 같이 되어 있습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | import sys from PyQt5.QtWidgets import * from PyQt5.QtCore import pyqtSlot class App(QMainWindow): def __init__(self): super().__init__() self.title = '파이썬 탭 연습' self.left = 100 self.top = 100 self.width = 300 self.height = 200 self.setWindowTitle(self.title) self.setGeometry(self.left, self.top, self.width, self.height) self.table_widget = MyTableWidget(self) self.setCentralWidget(self.table_widget) self.show() class MyTableWidget(QWidget): def __init__(self, parent): super(QWidget, self).__init__(parent) self.layout = QVBoxLayout(self) # 탭 스크린 설정 self.tabs = QTabWidget() self.tab1 = QWidget() self.tab2 = QWidget() self.tabs.resize(300, 200) # 탭 추가 self.tabs.addTab(self.tab1, "Tab 1") self.tabs.addTab(self.tab2, "Tab 2") # 첫번째 탭 레이아웃 설정 self.tab1.layout = QVBoxLayout(self) self.pushButton1 = QPushButton("PyQt5 button") self.tab1.layout.addWidget(self.pushButton1) self.tab1.setLayout(self.tab1.layout) # 그리고 위젯에 탭 추가 self.layout.addWidget(self.tabs) self.setLayout(self.layout) @pyqtSlot() def on_click(self): print("\n") for currentQTableWidgetItem in self.tableWidget.selectedItems(): print(currentQTableWidgetItem.row(), currentQTableWidgetItem.column(), currentQTableWidgetItem.text()) if __name__ == '__main__': app = QApplication(sys.argv) ex = App() sys.exit(app.exec_()) | cs |
App이라는 클래스는 QMainWindow를 상속합니다
그래서 App 클래스의 객체를 생성해주며 시작하게 되죠
App은 init을 통해 기본 셋팅을 해줍니다.
크기, 위치 등등을 말이죠
그리고 show를 통해 보여주고요
근데 보여주는 방식이 MyTableWidget 클래스를 사용해서 보여줍니다
MytableWidget은 Qwidget을 상속합니다
Qwidget은 UI와 오브젝트의 가장 상위 클래스입니다.
Qwidget밑에 버튼, 텍스트박스(QLineEdit), 콤보박스(QComboBox), 다이얼로그(QDialog) 등이 존재합니다
Mytable에서 init은 layout을 만들어주는데요
tabs = QTabWidtet()을 통해 탭에 대한 객체를 생성합니다.
그리고 각 탭은 QWidget을 통해 생성하고요
그리고 addTab을 통해 각 탭을 넣어줍니다!
이후 텝에 대해서 각 레이아웃을 셋팅해주고 add해줍니다
이렇게 하셔서 탭을 추가하시면 됩니다!
반응형
그리드형
'python' 카테고리의 다른 글
IT 봉사 - 교회봉사 교회(화도사랑의교회) 재정 프로그램 개발4 (0) | 2018.01.25 |
---|---|
파이썬 pyqt5 스크롤 영역(scroll area), 스크롤바 화면 만들기 (0) | 2018.01.25 |
파이썬 GUI 설치 및 예제 실행 - pyqt5 설치 (0) | 2018.01.24 |
IT 봉사 - 교회봉사 교회(화도사랑의교회) 재정 프로그램 개발3 (0) | 2018.01.24 |
IT 봉사 - 교회봉사 교회(화도사랑교회) 재정 프로그램 개발2 (2) | 2018.01.23 |