728x90
728x90
QTableWidget 안의 항목 검색 및 복원 기능 구현 방법
들어가며
- PyQt의
QTableWidget
안의 항목을 검색하고, 원래의 내용을 복원 시키는 방법을 정리해본다.

방법
- 검색하고자 하는 내용이 해당 행에 있을 경우 표시하고, 그렇지 않을 경우 숨기는 방법을 이용한다.
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QTableWidget, QTableWidgetItem, QPushButton, QLineEdit class SearchResetTableApp(QWidget): def __init__(self): super(SearchResetTableApp, self).__init__() self.init_ui() def init_ui(self): self.data = [ ["John", "Doe", "28", "Male"], ["Jane", "Smith", "35", "Female"], ["Bob", "Johnson", "40", "Male"], ["Alice", "Williams", "25", "Female"], ] self.table = QTableWidget(self) self.table.setColumnCount(4) self.table.setHorizontalHeaderLabels(["First Name", "Last Name", "Age", "Gender"]) self.populate_table(self.data) self.search_input = QLineEdit(self) self.search_button = QPushButton("Search", self) self.reset_button = QPushButton("Reset", self) self.search_button.clicked.connect(self.search_table) self.reset_button.clicked.connect(self.reset_table) layout = QVBoxLayout(self) layout.addWidget(self.search_input) layout.addWidget(self.search_button) layout.addWidget(self.reset_button) layout.addWidget(self.table) self.setLayout(layout) self.setGeometry(100, 100, 500, 300) self.setWindowTitle("Search and Reset Table") self.show() def populate_table(self, data): self.table.setRowCount(0) for row_data in data: row_position = self.table.rowCount() self.table.insertRow(row_position) for col_position, col_data in enumerate(row_data): self.table.setItem(row_position, col_position, QTableWidgetItem(str(col_data))) # 특정 항목 찾기 def search_table(self): search_text = self.search_input.text().lower() for row in range(self.table.rowCount()): hide_row = True for col in range(self.table.columnCount()): item_text = self.table.item(row, col).text().lower() if search_text in item_text: hide_row = False break self.table.setRowHidden(row, hide_row) # 원래대로 돌리기 def reset_table(self): for row in range(self.table.rowCount()): self.table.setRowHidden(row, False) if __name__ == '__main__': app = QApplication([]) window = SearchResetTableApp() app.exec_()
초기 프로그램 모습 | 검색 후의 모습 (Doe ) |
![]() |
![]() |
[Reset] 버튼을 누른 모습 |
|
![]() |
728x90
728x90
'Framework > PyQt' 카테고리의 다른 글
[PyQt] 다이얼로그(Dialog) (0) | 2025.02.25 |
---|---|
[PyQt] 테이블(QTableWidget) 내용 지우는 방법 (0) | 2025.01.16 |
[PyQt] self.function(param)과 function(self, param)의 차이점 (0) | 2024.10.12 |
[PyQt] QTableWidget과 SQLite3를 연동하여 구현한 CRUD 프로그램 (0) | 2023.11.27 |
[PyQt] 플랫폼 독립적인(Platform Independent) 스타일 적용하는 방법 (Fusion) (0) | 2023.09.21 |
[PyQt] 맥(Mac)에서 윈도우(Windows)와 비슷하게 메뉴 표시하는 방법 (0) | 2023.09.21 |
[PyQt] QTableWidget에 1,000 단위로 쉼표(,)를 추가하고 숫자 정렬 기능 추가하기 (0) | 2023.07.20 |
[PyQt] 간단한 CRUD(Create, Read, Update, Delete) 프로그램 (0) | 2023.07.18 |