정수 입력시 천 단위로 콤마를 추가해주는 pyQt5 예제Qt/PyQt5 강좌2024. 8. 17. 22:39
Table of Contents
반응형
정수를 입력시 천 단위로 콤마를 실시간으로 추가해주는 pyQt5 예제입니다.
2024. 8. 13 최초작성
import sys from PyQt5.QtWidgets import QApplication, QWidget, QLineEdit, QVBoxLayout from PyQt5.QtGui import QIntValidator # QLineEdit를 상속받아 사용자 정의 위젯을 만듭니다. class ThousandsSeparatorEdit(QLineEdit): def __init__(self, parent=None): super().__init__(parent) # 입력가능한 최소(0), 최대값(999999999) 지정 self.setValidator(QIntValidator(0, 999999999, self)) # 텍스트가 변경될 때마다 format_text 메서드를 호출합니다. self.textChanged.connect(self.format_text) def format_text(self): # 현재 커서 위치를 저장합니다. cursor_pos = self.cursorPosition() # 텍스트에서 콤마를 모두 제거합니다. 결과적으로 콤마가 입력안됩니다. text = self.text().replace(',', '') # 천 단위 콤마를 추가한 새 문자열을 생성합니다. 텍스트가 비어있으면 빈 문자열을 반환합니다. formatted_text = '{:,}'.format(int(text)) if text else '' # 포맷된 텍스트를 설정합니다. self.setText(formatted_text) # 커서 위치를 조정합니다. 새로 추가된 콤마의 수만큼 커서를 오른쪽으로 이동시킵니다. # 입력한 텍스트 오른쪽 끝에 커서가 위치하게 됩니다. self.setCursorPosition(cursor_pos + formatted_text.count(',', 0, cursor_pos)) # 메인 윈도우 클래스를 정의합니다. class MainWindow(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): # 윈도우의 크기를 200x100 픽셀로 고정합니다. self.setFixedSize(200,100) # 수직 박스 레이아웃을 생성합니다. layout = QVBoxLayout() # ThousandsSeparatorEdit 위젯을 생성합니다. self.edit = ThousandsSeparatorEdit(self) # 레이아웃에 위젯을 추가합니다. layout.addWidget(self.edit) # 윈도우에 위젯을 설정합니다. self.setLayout(layout) # 윈도우 제목을 설정합니다. self.setWindowTitle('천 단위 콤마 예제') # 윈도우를 화면에 표시합니다. self.show() if __name__ == '__main__': # QApplication 객체를 생성합니다. app = QApplication(sys.argv) # MainWindow 객체를 생성합니다. ex = MainWindow() # 이벤트 루프를 시작하고 애플리케이션이 종료되면 시스템에 종료코드를 반환합니다. sys.exit(app.exec_()) |
반응형
'Qt > PyQt5 강좌' 카테고리의 다른 글
pyQt5 QSlider 예제 (0) | 2024.08.19 |
---|---|
정수를 읽어서 한글로 변환해주는 pyQt5 예제 (0) | 2024.08.18 |
pyQt5 QTableWidget 예제 코드 (0) | 2024.08.16 |
PyQt5 검색창 UI 예제 (0) | 2024.08.12 |
pyQt5 QDoubleSpinBox 예제 (0) | 2024.08.11 |
시간날때마다 틈틈이 이것저것 해보며 블로그에 글을 남깁니다.
블로그의 문서는 종종 최신 버전으로 업데이트됩니다.
여유 시간이 날때 진행하는 거라 언제 진행될지는 알 수 없습니다.
영화,책, 생각등을 올리는 블로그도 운영하고 있습니다.
https://freewriting2024.tistory.com
제가 쓴 책도 한번 검토해보세요 ^^
@webnautes :: 멈춤보단 천천히라도
그렇게 천천히 걸으면서도 그렇게 빨리 앞으로 나갈 수 있다는 건.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!