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] 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 |
[PyQt] QTimer.singleShot 함수를 특정 시간 간격으로 여러번 실행하는 방법 (0) | 2023.07.16 |
[PyQt] QAction에서 triggered 시그널을 사용할 때, 인자를 triggered 메서드에 전달하는 방법 (0) | 2023.07.08 |