반응형

▣ ObjectName

Python코드에서 사용될 위젯의 이름을 결정하는 역할을 합니다. 기억하기 쉬운 이름으로 정하는 것을 권장드리며, 서로 다른 위젯이 같은 ObjectName을 가질 수는 없습니다.ObjectName의 역할은 각 위젯(예: 버튼, 레이블, 텍스트 입력창 등)에 고유한 식별자(ID)를 부여하여 코드에서 해당 위젯을 참조하거나 조작할 수 있도록 하는 것입니다. 이는 Qt 애플리케이션 개발에서 UI와 로직을 연결하는 데 매우 중요한 역할을 합니다.
▷ ObjectName의 주요 역할
1. 위젯 식별:
- Qt Designer에서 생성한 UI 파일(.ui)을 Python, C++ 등의 코드로 변환하면, 각 위젯은 ObjectName을 기반으로 고유한 변수명이나 참조 이름으로 사용됩니다. 예를 들어, QPushButton의 ObjectName이 pushButton_OK로 설정되어 있다면, 코드에서 이 이름을 통해 버튼을 참조할 수 있습니다.
2.코드와 UI 연결:
- Qt Designer로 만든 UI를 코드에서 로드할 때, ObjectName은 위젯을 프로그래밍 방식으로 접근하기 위한 키 역할을 합니다. 예를 들어, PyQt나 PySide를 사용할 경우 self.ui.pushButton_OK와 같이 ObjectName을 사용하여 버튼의 클릭 이벤트나 속성을 조작할 수 있습니다.
3. 스타일시트 적용:
- ObjectName은 Qt 스타일시트(QSS, Qt Style Sheet)에서 특정 위젯에 스타일을 적용할 때 사용됩니다. 예를 들어, #pushButton_OK { background-color: blue; }와 같이 ObjectName을 지정하여 특정 버튼에만 스타일을 적용할 수 있습니다.
4. 디버깅 및 유지보수:
- 고유한 ObjectName을 설정하면 코드에서 위젯을 명확히 식별할 수 있어 디버깅과 유지보수가 쉬워집니다. 예를 들어, pushButton_1, pushButton_2처럼 명확한 이름을 사용하면 어떤 버튼이 어떤 역할을 하는지 쉽게 파악할 수 있습니다.
▷ 예제
Qt Designer에서 버튼의 ObjectName을 pushButton_OK로 설정한 경우, Python 코드에서 이를 참조하는 방법은 다음과 같습니다:
from PyQt6 import QtWidgets, uic
class MyWindow(QtWidgets.QMainWindow):
def __init__(self):
super().__init__()
self.ui = uic.loadUi("my_ui_file.ui", self) # UI 파일 로드
self.ui.pushButton_OK.clicked.connect(self.on_button_click) # 버튼 클릭 이벤트 연결
def on_button_click(self):
print("OK 버튼이 클릭되었습니다!")
app = QtWidgets.QApplication([])
window = MyWindow()
window.show()
app.exec_()
▷ 주의사항
- 고유성:
ObjectName은 동일한 UI 내에서 고유해야 합니다. 중복된 이름을 사용하면 코드에서 충돌이 발생할 수 있습니다. - 명명 규칙:
ObjectName은 일반적으로 카멜 케이스(camelCase)나 스네이크 케이스(snake_case)를 사용하며, 공백이나 특수 문자를 피하는 것이 좋습니다. - 기본값:
Qt Designer는 기본적으로 pushButton, label 같은 일반적인 이름을 부여하지만, 명확한 식별을 위해 직접 이름을 변경하는 것이 권장됩니다.
ObjectName은 Qt Designer에서 UI 위젯을 코드에서 참조하고, 스타일을 적용하며, 디버깅과 유지보수를 쉽게 하기 위한 고유 식별자 역할을 합니다.
초보자를 위한 Python GUI 프로그래밍 - PyQt5
**저자소개** 이세빈(leesebin@soongsil.ac.kr) 숭실대학교 IT대학 글로벌미디어학부에 재학중인 학생이다. 숭실대학교 33Lab (Enhan…
wikidocs.net

반응형
'업무 자동화 > python & CAD' 카테고리의 다른 글
| Get dimensions from a Creo model #2 (1) | 2025.09.18 |
|---|---|
| Qt Designer 학습] 시그널 이란? (0) | 2025.09.10 |
| Qt Designer 학습] python 코드와 연결 하는 방법? (0) | 2025.09.09 |
| Python 개발] 하위 폴더의 용량 비교 #2 (0) | 2025.09.08 |
| Python 개발] 하위 폴더의 용량 비교 #1 (0) | 2025.09.08 |