728x90
반응형
티스토리
PySimpleGUI
tkinter 보다 저는 주로 간단하게 PySimpleGUI을 주로 이용합니다.
모듈이름 처럼 간단한 주요 10가지 예제를 알아 봅시다.
1. 코드리뷰- 텍스트 입력창 만들기
이 예제는 간단한 텍스트 입력 윈도우를 생성합니다. "이름을 입력하세요."라는 텍스트와 입력 필드, 그리고 "확인" 버튼으로 구성되어 있습니다. "확인" 버튼을 누르면 입력된 텍스트가 출력됩니다.
import PySimpleGUI as sg
# 윈도우 생성
layout = [
[sg.Text("이름을 입력하세요.")],
[sg.InputText()],
[sg.Button("확인")]
]
window = sg.Window("간단한 텍스트 입력", layout)
# 이벤트 처리
while True:
event, values = window.read()
if event == sg.WIN_CLOSED:
break
# 입력된 텍스트 출력
print(values["input_text"])
# 윈도우 종료
window.close()
결과 화면 :
2. 코드리뷰 - 텍스트 출력
텍스트를 윈도우 창에 출력
import PySimpleGUI as sg
# 윈도우 생성
layout = [
[sg.Text("오늘은 화요일입니다.")]
]
window = sg.Window("텍스트 출력", layout)
# 윈도우 표시
window.read()
# 윈도우 종료
window.close()
결과 :
3. 코드리뷰 - 콤보 박스
이 예제는 콤보박스를 사용하여 이름을 선택하는 윈도우를 생성합니다. "선수를 선택하세요."라는 텍스트와 콤보박스, 그리고 "확인" 버튼으로 구성되어 있습니다. "확인" 버튼을 누르면 선택된 선수 이름이 출력됩니다.
import PySimpleGUI as sg
# 윈도우 생성
layout = [
[sg.Text("축구 선수를 선택하세요.")],
[sg.Combo(key='combo' ,values=["손흥민", "이강인", "김민재"], size=(30, 50))],
[sg.Button("확인")]
]
window = sg.Window("콤보박스", layout)
# 이벤트 처리
while True:
event, values = window.read()
if event == sg.WIN_CLOSED:
break
# 선택된 이름 출력
print(values["combo"])
# 윈도우 종료
window.close()
결과 화면 :
4. 코드리뷰 - 라디오 버튼
import PySimpleGUI as sg
# 윈도우 생성
layout = [
[sg.Text("성별을 선택하세요.")],
[sg.Radio("남성", "gender", key = 'gender', default=True)],
[sg.Radio("여성", "gender", key = 'gender')],
[sg.Button("확인")]
]
window = sg.Window("라디오 버튼", layout)
# 이벤트 처리
while True:
event, values = window.read()
if event == sg.WIN_CLOSED:
break
# 선택된 성별 출력
print(values["gender"])
# 윈도우 종료
window.close()
결과 화면 :
5. 코드리뷰 - 체크박스
이 예제는 체크박스를 사용하여 취미를 선택하는 윈도우를 생성합니다. "취미를 선택하세요."라는 텍스트와 체크박스 3개, 그리고 "확인" 버튼으로 구성되어 있습니다. "확인" 버튼을 누르면 선택된 취미가 출력됩니다.
import PySimpleGUI as sg
# 윈도우 생성
layout = [
[sg.Text("취미를 선택하세요.")],
[sg.Checkbox("독서", "hobby")],
[sg.Checkbox("운동", "hobby")],
[sg.Checkbox("여행", "hobby")],
[sg.Button("확인")]
]
window = sg.Window("체크박스", layout)
# 이벤트 처리
while True:
event, values = window.read()
if event == sg.WIN_CLOSED:
break
# 선택된 취미 출력
hobbies = []
for key, value in values.items():
if value:
hobbies.append(key)
print(hobbies)
# 윈도우 종료
window.close()
결과
6. 코드리뷰 - 리스트 박스
참고 : size() 속성을 (-1, -1)로 설정하면 콤보 박스의 크기가 윈도우 크기에 맞게 자동으로 조정됩니다.
import PySimpleGUI as sg
# 윈도우 생성
layout = [
[sg.Text("선수를 선택하세요.")],
[sg.Listbox(values=["손흥민", "김민재", "이강인", "황희찬"], size=(10,5), key='listbox')],
[sg.Button("확인")]
]
window = sg.Window("리스트박스", layout)
# 이벤트 처리
while True:
event, values = window.read()
if event == sg.WIN_CLOSED:
break
# 선택된 이름 출력
print(values["listbox"])
# 윈도우 종료
window.close()
결과
7. 코드리뷰 - 슬라이더
import PySimpleGUI as sg
# 윈도우 생성
layout = [
[sg.Text("밝기를 조절하세요.")],
[sg.Slider(range=(0, 100), default_value=50, orientation="horizontal")],
[sg.Button("확인")]
]
window = sg.Window("슬라이더", layout)
# 이벤트 처리
while True:
event, values = window.read()
if event == sg.WIN_CLOSED:
break
# 슬라이더 값 출력
print(values["slider"])
# 윈도우 종료
window.close()
결과
8. 코드리뷰 - 텍스트 에디터 , 여러 문장 출력하기
이 예제는 텍스트 에디터를 사용하여 텍스트를 입력하는 윈도우를 생성합니다.
import PySimpleGUI as sg
# 윈도우 생성
layout = [
[sg.Text("텍스트를 입력하세요.")],
[sg.Multiline(size=(50, 10),key='multiline')],
[sg.Button("확인")]
]
window = sg.Window("텍스트 에디터", layout)
# 이벤트 처리
while True:
event, values = window.read()
if event == sg.WIN_CLOSED:
break
# 입력된 텍스트 출력
print(values["multiline"])
# 윈도우 종료
window.close()
결과
마무리
- 이번 포스팅은 PysimpleGUI 주요 10가지 기능을 예제 코드로 알아봤습니다.
- 주요 에러 원인 분석 :
print(values["input_text"]) ~~~~~~^^^^^^^^^^^^^^ KeyError: 'input_text' |
위와 같이 key 에러가 나면..
오류의 원인: 해당 오류는 values 딕셔너리에 "input_text" 키가 존재하지 않아 발생하는 KeyError입니다. 이는 보통 다음과 같은 이유에서 발생할 수 있습니다. 입력 엘리먼트의 이름이 다름: 코드에서 입력 엘리먼트의 이름이 input_text가 아닌 다른 이름으로 설정되었을 수 있습니다. 코드에서 입력 엘리먼트를 생성하는 부분을 확인하여 올바른 이름을 사용해야 합니다. 윈도우 레이아웃에 입력 엘리먼트가 없음: 윈도우 레이아웃에 sg.InputText()를 사용하여 입력 엘리먼트를 추가하지 않았거나, 추가한 입력 엘리먼트의 이름이 input_text가 아닌 경우 이 오류가 발생합니다. 이벤트 발생 전 접근 시도: window.read() 함수를 호출하여 이벤트를 발생시키기 전에 values["input_text"]에 접근하려고 하면 이 오류가 발생합니다. 입력 값을 가져오려면 이벤트가 발생한 후에 접근해야 합니다. 해결 방안: 입력 엘리먼트 이름 확인: 코드에서 입력 엘리먼트를 생성하는 부분을 찾아 정확한 이름을 확인합니다. 예를 들어, sg.InputText(key="my_input")와 같이 생성했다면 values["my_input"]으로 접근해야 합니다. 레이아웃에 입력 엘리먼트 추가: 윈도우 레이아웃에 sg.InputText()를 사용해 입력 엘리먼트를 추가하고, 이름을 input_text로 설정합니다. 이벤트 발생 후 접근: window.read() 함수 호출 후 이벤트 루프에서 입력 값을 가져옵니다 |
궁금한 사항은 댓글을 통해서 남겨 주시면 답변 드리겠습니다.
감사합니다.
728x90
반응형
'PYTHON 파이썬 > PysimpleGUI' 카테고리의 다른 글
[PysimpleGui] popups tutorials 팝업창 예제 모음 (0) | 2024.03.07 |
---|---|
PysimpleGUI File Browser , 파일 탐색기 만들기 (0) | 2024.01.30 |
[PysimpleGUI/Folder Browser] 여러 폴더를 찾고 출력하기 (0) | 2023.12.25 |
[Python/Pandas]파이썬 판다스 datetime 특정 날짜 구간 조건별 추출#2 (0) | 2023.12.23 |
File Browsing / PySimpleGUI / sg.popup_get_file (0) | 2023.08.04 |