728x90
테이블에 아이템 삽입
접근해야하는 위젯들의 object name
결과로 받은 데이터를 tableWidget에 item을 삽입해야합니다.
우선 저는 다음과 같이 set_table() 함수를 만들어서 크롤러의 결과 데이터를 넘겨줄 것입니다.
def run(self):
keyword = self.lineEdit.text()
self.crawler.set_keyword(keyword + ' 날씨')
self.crawler.run()
r = self.crawler.get_result()
self.set_table(r)
def set_table(self, data):
pass
QTableWidget에 아이템을 추가할 때는 여러 개를 동시에 추가하는 것과 하나씩 받아 추가하는 것을 고려해야합니다.
지금은 특성상 하나씩 받을 것입니다.
현재 tableWidget 의 rowCount 를 가져옵니다.
아무것도 없으니 0 이겠죠. 이것을 row 의 인덱스로 사용할 것입니다.
row_idx = self.tableWidget.rowCount()
행을 먼저 추가해야만 아이템을 삽입할 수 있습니다.
insertRow로 행을 추가합니다.
row_idx = self.tableWidget.rowCount()
다음과 같이 위젯에 배치되어있는 컬럼의 인덱스를 찾을 것입니다.
나중에 위젯의 컬럼위치를 변경할 때 다음 리스트의 컬럼위치도 똑같이 변경해주면 되겠죠.
self.table_cols = ['지역명', '시간', '상태']
...
col_idx = self.table_cols.index('지역명')
그리고 str 타입의 데이터로 QTableWidgetItem 객체를 생성하고
table_item = QtWidgets.QTableWidgetItem(data['loc'])
마지막에는 tableWidget에 삽입합니다.
self.tableWidget.setItem(row_idx, col_idx, table_item)
결과입니다.
전체코드
import sys
from PyQt5 import QtCore, QtWidgets, uic
from PyQt5.QtWidgets import QMainWindow
from crawler import *
ui = uic.loadUiType('app.ui')[0]
class MainWindow(QMainWindow, ui):
def __init__(self):
super().__init__()
self.setupUi(self)
self.pushButton.clicked.connect(self.run)
self.crawler = GoogleWeather()
self.table_cols = ['지역명', '시간', '상태']
def run(self):
keyword = self.lineEdit.text()
self.crawler.set_keyword(keyword + ' 날씨')
self.crawler.run()
r = self.crawler.get_result()
self.set_table(r)
def set_table(self, data):
if data:
row_idx = self.tableWidget.rowCount()
self.tableWidget.insertRow(row_idx)
col_idx = self.table_cols.index('지역명')
table_item = QtWidgets.QTableWidgetItem(data['loc'])
self.tableWidget.setItem(row_idx, col_idx, table_item)
col_idx = self.table_cols.index('시간')
table_item = QtWidgets.QTableWidgetItem(data['time'])
self.tableWidget.setItem(row_idx, col_idx, table_item)
col_idx = self.table_cols.index('상태')
table_item = QtWidgets.QTableWidgetItem(data['status'])
self.tableWidget.setItem(row_idx, col_idx, table_item)
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
main_window = MainWindow()
main_window.show()
app.exec_()
'Application > PyQt5' 카테고리의 다른 글
파이큐티 앱 : 피파4 가격 검색기 (0) | 2020.07.27 |
---|---|
파이큐티(PyQt5) 시작하기 - 구글 날씨 검색기 만들기 -4 : 완성도 (0) | 2020.07.22 |
파이큐티(PyQt5) 시작하기 - 구글 날씨 검색기 만들기 -2 : 모듈 연동과 이벤트 처리 (0) | 2020.07.22 |
파이큐티(PyQt5) 시작하기 - 구글 날씨 검색기 만들기 -1 : 디자이너 활용 (0) | 2020.07.22 |
파이큐티(PyQt5) 시작하기 - 어플리케이션 실행하는 3가지 방법 (1) | 2020.07.22 |