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

QTableWidget 안의 항목 검색 및 복원 기능 구현 방법들어가며방법