PyQt5 검색창 UI 예제Qt/PyQt5 강좌2024. 8. 12. 22:32
Table of Contents
반응형
PyQT5로 만든 검색창 UI 예제입니다.
2024. 8. 11 최초작성
검색어를 입력 후, 버튼을 클릭하면 해당 단어들에 하이라이트가 표시됩니다.
import sys import random from PyQt5.QtWidgets import QApplication, QWidget, QLineEdit, QPushButton, QVBoxLayout, QTextEdit from PyQt5.QtGui import QTextCharFormat, QBrush, QColor from PyQt5.QtGui import QTextDocument from PyQt5.QtGui import QTextCursor class SearchApp(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): # UI 구성요소 생성 self.search_input = QLineEdit() self.search_button = QPushButton('검색') self.search_button.clicked.connect(self.perform_search) self.result_output = QTextEdit() self.result_output.setReadOnly(True) # 레이아웃 설정 layout = QVBoxLayout() layout.addWidget(self.search_input) layout.addWidget(self.search_button) layout.addWidget(self.result_output) # 윈도우 설정 self.setLayout(layout) self.setGeometry(300, 300, 800, 800) self.setWindowTitle('검색 애플리케이션') self.show() # 초기 텍스트 설정 text = ''' 동물 친구들 토끼 토끼 깡충깡충 긴 귀를 쫑긋쫑긋 곰돌이 곰돌이 느림보 꿀을 찾아 쿨쿨쿨 원숭이 원숭이 재주꾼 나무 타고 놀자놀자 기린 기린 목이 길어 하늘 구름 만져볼까 코끼리 코끼리 큰 귀를 팔랑팔랑 흔들어요 펭귄 펭귄 뒤뚱뒤뚱 얼음 위를 걸어가요 사자 사자 으르렁 숲의 왕은 나야나 토끼 곰돌이 원숭이 기린 코끼리 펭귄 사자 우리 모두 친구 친구 ''' self.result_output.append(text) def perform_search(self): # 검색 수행 search_text = self.search_input.text() self.highlight_text(search_text) def highlight_text(self, text): list_word = text.split(' ') # 이전 하이라이트 제거 cursor = self.result_output.textCursor() cursor.select(QTextCursor.Document) format = QTextCharFormat() format.setBackground(QBrush(QColor("white"))) # 또는 self.result_output의 기본 배경색 cursor.mergeCharFormat(format) for word in list_word: # 새로운 검색 및 하이라이트 format = QTextCharFormat() random_color = QColor(random.randint(100, 255), random.randint(100, 255), random.randint(100, 255)) format.setBackground(QBrush(random_color)) cursor.setPosition(0) self.result_output.setTextCursor(cursor) find_flags = QTextDocument.FindFlags() find_flags &= ~QTextDocument.FindCaseSensitively # 검색 및 하이라이트 로직 while self.result_output.find(word, find_flags): cursor = self.result_output.textCursor() cursor.mergeCharFormat(format) self.result_output.setTextCursor(cursor) # 마지막 선택 상태 해제 cursor = self.result_output.textCursor() cursor.clearSelection() self.result_output.setTextCursor(cursor) # 커서를 문서의 끝으로 이동 cursor.movePosition(QTextCursor.End) self.result_output.setTextCursor(cursor) if __name__ == '__main__': app = QApplication(sys.argv) ex = SearchApp() sys.exit(app.exec_()) |
반응형
'Qt > PyQt5 강좌' 카테고리의 다른 글
정수 입력시 천 단위로 콤마를 추가해주는 pyQt5 예제 (0) | 2024.08.17 |
---|---|
pyQt5 QTableWidget 예제 코드 (0) | 2024.08.16 |
pyQt5 QDoubleSpinBox 예제 (0) | 2024.08.11 |
두 개의 바를 사용하여 최대값, 최소값 조정하는 슬라이더 PyQt5 예제 (0) | 2024.08.09 |
pyQt5 다중 탭에 텍스트 에디터가 포함된 예제 (0) | 2024.08.08 |
시간날때마다 틈틈이 이것저것 해보며 블로그에 글을 남깁니다.
블로그의 문서는 종종 최신 버전으로 업데이트됩니다.
여유 시간이 날때 진행하는 거라 언제 진행될지는 알 수 없습니다.
영화,책, 생각등을 올리는 블로그도 운영하고 있습니다.
https://freewriting2024.tistory.com
제가 쓴 책도 한번 검토해보세요 ^^
@webnautes :: 멈춤보단 천천히라도
그렇게 천천히 걸으면서도 그렇게 빨리 앞으로 나갈 수 있다는 건.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!