업무 자동화/python & CAD
python 학습] 선택된 변수 값 표시하기
ToolBOX01
2025. 9. 4. 10:32
반응형
A, B, C 중에서 하나를 선택하면, 해당 값을 표시하는 간단한 프로그램입니다.
options = {'A': 1, 'B': 2, 'C': 3}
selected_key = input("A, B, C 중 하나를 선택하세요: ").upper()
if selected_key in options:
selected_value = options[selected_key]
print(f"Selected option: {selected_key} = {selected_value}")
else:
print("잘못된 입력입니다. A, B, C 중 하나를 선택하세요.")
※ 세부 내용을 설명 합니다
options = {'A': 1, 'B': 2, 'C': 3}
- options라는 딕셔너리를 생성합니다.
- 키는 A, B, C이고, 각각의 값은 1, 2, 3입니다.
- 예: options['A']는 1을 반환합니다.
selected_key = input("A, B, C 중 하나를 선택하세요: ").upper()
- input() 함수는 사용자에게 텍스트 입력을 요청합니다. 프롬프트로 "A, B, C 중 하나를 선택하세요: "를 표시하여 사용자가 A, B, 또는 C를 입력하도록 안내합니다.
- .upper() 메서드는 입력된 문자열을 대문자로 변환합니다. 예를 들어, 사용자가 a를 입력하더라도 A로 변환됩니다.
- 이렇게 하면 사용자가 소문자(a)나 대문자(A)를 입력해도 동일하게 처리할 수 있습니다.
- 입력값은 selected_key 변수에 저장됩니다.
if selected_key in options:
- selected_key in options는 사용자가 입력한 값(selected_key)이 딕셔너리 options의 키(A, B, C) 중 하나인지 확인합니다.
- 예: 사용자가 A를 입력하면, A가 options의 키에 있으므로 조건이 참이 됩니다.
selected_value = options[selected_key]
- 입력한 키가 유효할 경우, 해당 키에 연결된 값을 options 딕셔너리에서 가져옵니다.
- 예: selected_key가 A라면, options['A']는 1이므로 selected_value는 1이 됩니다.
print(f"Selected option: {selected_key} = {selected_value}")
- 선택된 키와 해당 값을 f-문자열(f-string)을 사용해 출력합니다.
- 예: 사용자가 A를 입력하면 출력은 Selected option: A = 1이 됩니다.
else:
- 사용자가 A, B, C 이외의 값을 입력하면(예: D 또는 xyz), selected_key in options 조건이 거짓이 되어 else 블록이 실행됩니다.
- 이 경우 "잘못된 입력입니다. A, B, C 중 하나를 선택하세요."라는 오류 메시지를 출력합니다.
▣ Qt Desiner로 UI 만들고, 선택하는 프로그 램 만들기

Main.xlm 파일
- Main.xlm (AI로 코드를 만듭니다) => Qt Desiner에 Open후 Main,ui 파일로 저장 합니다
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>300</height>
</rect>
</property>
<property name="windowTitle">
<string>Option Selector</string>
</property>
<widget class="QWidget" name="centralwidget">
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QLabel" name="instructionLabel">
<property name="text">
<string>A, B, C 중 하나를 선택하세요:</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="optionComboBox">
<property name="editable">
<bool>false</bool>
</property>
<item>
<property name="text">
<string>A</string>
</property>
</item>
<item>
<property name="text">
<string>B</string>
</property>
</item>
<item>
<property name="text">
<string>C</string>
</property>
</item>
</widget>
</item>
<item>
<widget class="QLabel" name="resultLabel">
<property name="text">
<string>선택된 옵션: </string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
<resources/>
<connections/>
</ui>
파이썬 코드
import sys
import os
from PyQt6.QtWidgets import QApplication, QMainWindow
from PyQt6.uic import loadUi
class MainWindow(QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
# main.ui 파일 경로 확인 및 로드
ui_file_path = os.path.join(os.path.dirname(__file__), "main.ui")
if not os.path.exists(ui_file_path):
raise FileNotFoundError(f"main.ui 파일을 {ui_file_path}에서 찾을 수 없습니다. 파일을 같은 디렉토리에 추가하세요.")
loadUi(ui_file_path, self)
# 딕셔너리 정의
self.options = {'A': 1, 'B': 2, 'C': 3}
# 콤보박스 이벤트 연결
self.optionComboBox.currentTextChanged.connect(self.display_option)
def display_option(self, key):
if key in self.options:
selected_value = self.options[key]
self.resultLabel.setText(f"Selected option: {key} = {selected_value}")
else:
self.resultLabel.setText("선택된 옵션: ")
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec())
파이썬 파일 과 Qt designer 파일은 기존적으로 동일한 폴더에 위치 합니다. 다른 폴더에 위치 할수 있습니다
파이썬 파일을 실행 파일(exe)로 만들수 있습니다. 일반적으로 .exe 파일로 만들 때 .ui 파일을 별도로 관리해야 합니다.
- loadUi("main.ui", self)는 실행 시점에 main.ui 파일을 파싱하여 GUI를 생성합니다. 이는 .ui 파일이 실행 파일과 동일한 디렉토리에 있어야 하거나, 경로가 명시적으로 지정되어야 한다는 것을 의미합니다.
- .exe 파일은 파이썬 스크립트를 독립 실행형 바이너리로 변환하지만, 기본적으로 .ui 파일과 같은 외부 리소스를 포함하지 않습니다.
- 실행 시 .ui 파일을 찾을 수 없으면 FileNotFoundError가 발생합니다.
※ 실행(exe) 파일로 배포시 다음과 같이 2개의 방법이 있습니다
방법 1: PyInstaller로 .exe 생성 시 --add-data 옵션을 사용해 .ui 파일을 포함:
pyinstaller --add-data "main.ui;." -F TEST003.PY
생성된 .exe와 함께 main.ui를 동일 디렉토리에 배치.
- 장점: .ui 파일을 수정하거나 업데이트하기 쉬움.
- 단점: 사용자에게 .ui 파일을 별도로 배포해야 하며, 누락 시 오류 발생 가능성.
방법 2: .ui 파일을 .py로 변환
- pyuic6 도구를 사용해 .ui 파일을 .py로 변환
pyuic6 main.ui -o ui_main.py
2. 변환된 ui_main.py를 프로그램이 실행 되는 파이썬 코드 (TEST003.PY)에 임포트하여 사용:
from ui_main import Ui_MainWindow # 변환된 UI 클래스 임포트
class MainWindow(QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
# 나머지 로직...
3. PyInstaller로 .exe 생성:
pyinstaller -F TEST003.PY
- 장점: .ui 파일이 필요 없어 독립적인 .exe 생성 가능.
- 단점: .ui 수정 시마다 pyuic6로 다시 변환해야 함.
권장 접근법
- 개발 단계: .ui 파일을 직접 호출하는 방식(loadUi)을 사용하여 유연성을 유지.
- 배포 단계: .ui를 .py로 변환하거나, PyInstaller에 .ui를 포함시키는 방식을 선택.
- 소규모 프로젝트라면 .ui를 포함하는 것이 간단함.
pyinstaller --add-data "C:\02python\python_project01\main.ui;." -F C:\02python\python_project01\TEST003.PY
- dist 폴더에 생성된 .exe와 함께 main.ui가 포함된 디렉토리를 배포.
- 아이콘 및 리소스: 추가 리소스(아이콘 등)가 있다면 --add-data로 포함.
- 대규모 프로젝트나 업데이트 빈도가 높지 않다면 .ui를 .py 변환을 권장.
by korealionkk@gmail.com

반응형