[3일차]
19. 프로젝트 (이미지 합치기 프로그램 만들기)
20. 레이아웃 전반전
21. 레이아웃 후반전
22. 레이아웃 연장전
23. 파일 추가 & 선택 삭제
24. 저장 경로
25. 자동 스크린샷
26. 이미지 합치기
19. 프로젝트
주의사항
프로그램 제작에 앞서 필요한 기능 구현과 사용설명에 대한 부분이다. 기획이라고 보는게 더 맞을 것 같다.
실제 사용자가 원하는 기능과 과정에 대한 고민이 완료되면 다음 단계로 ㄱㄱ
20~22 통합 정리
20-1 . 레이아웃 전반전(기본)
from tkinter import *
import tkinter.ttk as ttk
root = Tk()
root.title("WT GUI")
# # 파일 프레임(파일 추가, 선택 삭제)
file_frame = Frame(root)
file_frame.pack(fill="x")
btn_add_file = Button(file_frame, padx=5, pady=5, width=12, text ="파일추가")
btn_add_file.pack(side="left")
btn_del_file = Button(file_frame, padx=5, pady=5, width=12, text="선택삭제")
btn_del_file.pack(side="right")
# 리스트 프레임
list_frame = Frame(root)
list_frame.pack(fill="both")
scrollbar = Scrollbar(list_frame)
scrollbar.pack(side="right", fill="y")
list_file = Listbox(list_frame, selectmode="extended", height=15, yscrollcommand=scrollbar.set)
list_file.pack(side="left", fill="both", expand=True)
scrollbar.config(command=list_file.yview)
# 저장 경로 프레임
path_frame = LabelFrame(root, text="저장경로")
path_frame.pack(fill="x")
txt_dest_path = Entry(path_frame)
txt_dest_path.pack(side="left", fill="x", expand=True, ipady=4)
btn_dest_path = Button(path_frame, text="찾아보기", width=10)
btn_dest_path.pack(side="right")
# 옵션 프레임
frame_option = LabelFrame(root, text="옵션")
frame_option.pack()
#1. 가로 넓이 옵션
# 가로 넓이 레이블
lbl_width = Label(frame_option, text ="가로넓이" , width=8)
lbl_width.pack(side="left")
# 가로 넓이 콤보
opt_width = ["원본유지", "1024", "800", "640"]
cmb_width = ttk.Combobox(frame_option, state="readonly", values = opt_width, width=10)
cmb_width.current(0)
cmb_width.pack(side="left")
#2. 간격 옵션
# 간격 옵션 레이블
lbl_space = Label(frame_option, text ="간격" , width=8)
lbl_space.pack(side="left")
# 간격 옵션 콤보
opt_space = ["없음", "좁게", "보통", "넓게"]
cmb_space = ttk.Combobox(frame_option, state="readonly", values = opt_space, width=10)
cmb_space.current(0)
cmb_space.pack(side="left")
#3. 파일 포맷 옵션
# 파일포맷 옵션 레이블
lbl_format = Label(frame_option, text ="포맷" , width=8)
lbl_format.pack(side="left")
# 간격 옵션 콤보
opt_format = ["PNG","JPG","BMP"]
cmb_format = ttk.Combobox(frame_option, state="readonly", values = opt_format, width=10)
cmb_format.current(0)
cmb_format.pack(side="left")
# 진행상황 progress Bar
frame_progress = LabelFrame(root, text="진행상황")
frame_progress.pack(fill="x")
p_var = DoubleVar()
progress_bar = ttk.Progressbar(frame_progress, maximum=100, variable=p_var)
progress_bar.pack(fill="x")
# 실행 프레임
frame_run = Frame(root)
frame_run.pack(fill="x")
btn_close = Button(frame_run, padx=5, pady=5, text="종료", width=12, command=root.quit)
btn_close.pack(side="right")
btn_start = Button(frame_run, padx=5, pady=5, text="시작", width=12)
btn_start.pack(side="right")
root.resizable(False,False) # x너비, y 변경 불가
root.mainloop()
주의사항
- pack 형식으로 디자인구성
- frame(파랑) 별로 구별하여 구성.
- widget(빨강) 별로 구별하여 구성
20-2. 레이아웃 전반전 수정 1차
- frame 간 pad 값 추가
from tkinter import *
import tkinter.ttk as ttk
root = Tk()
root.title("WT GUI")
# # 파일 프레임(파일 추가, 선택 삭제)
file_frame = Frame(root)
file_frame.pack(fill="x", padx=5, pady=5)
btn_add_file = Button(file_frame, padx=5, pady=5, width=12, text ="파일추가")
btn_add_file.pack(side="left")
btn_del_file = Button(file_frame, padx=5, pady=5, width=12, text="선택삭제")
btn_del_file.pack(side="right")
# 리스트 프레임
list_frame = Frame(root)
list_frame.pack(fill="both", padx=5, pady=5)
scrollbar = Scrollbar(list_frame)
scrollbar.pack(side="right", fill="y")
list_file = Listbox(list_frame, selectmode="extended", height=15, yscrollcommand=scrollbar.set)
list_file.pack(side="left", fill="both", expand=True)
scrollbar.config(command=list_file.yview)
# 저장 경로 프레임
path_frame = LabelFrame(root, text="저장경로")
path_frame.pack(fill="x", padx=5, pady=5, ipady=5)
txt_dest_path = Entry(path_frame)
txt_dest_path.pack(side="left", fill="x",padx=5, pady=5,expand=True, ipady=4)
btn_dest_path = Button(path_frame, text="찾아보기", width=10)
btn_dest_path.pack(side="right", padx=5, pady=5)
# 옵션 프레임
frame_option = LabelFrame(root, text="옵션")
frame_option.pack(padx=5, pady=5, ipady=5)
#1. 가로 넓이 옵션
# 가로 넓이 레이블
lbl_width = Label(frame_option, text ="가로넓이" , width=8)
lbl_width.pack(side="left", padx=5, pady=5)
# 가로 넓이 콤보
opt_width = ["원본유지", "1024", "800", "640"]
cmb_width = ttk.Combobox(frame_option, state="readonly", values = opt_width, width=10)
cmb_width.current(0)
cmb_width.pack(side="left", padx=5, pady=5)
#2. 간격 옵션
# 간격 옵션 레이블
lbl_space = Label(frame_option, text ="간격" , width=8)
lbl_space.pack(side="left", padx=5, pady=5)
# 간격 옵션 콤보
opt_space = ["없음", "좁게", "보통", "넓게"]
cmb_space = ttk.Combobox(frame_option, state="readonly", values = opt_space, width=10)
cmb_space.current(0)
cmb_space.pack(side="left", padx=5, pady=5)
#3. 파일 포맷 옵션
# 파일포맷 옵션 레이블
lbl_format = Label(frame_option, text ="포맷" , width=8)
lbl_format.pack(side="left", padx=5, pady=5)
# 간격 옵션 콤보
opt_format = ["PNG","JPG","BMP"]
cmb_format = ttk.Combobox(frame_option, state="readonly", values = opt_format, width=10)
cmb_format.current(0)
cmb_format.pack(side="left", padx=5, pady=5)
# 진행상황 progress Bar
frame_progress = LabelFrame(root, text="진행상황")
frame_progress.pack(fill="x", padx=5, pady=5, ipady=5)
p_var = DoubleVar()
progress_bar = ttk.Progressbar(frame_progress, maximum=100, variable=p_var)
progress_bar.pack(fill="x", padx=5, pady=5)
# 실행 프레임
frame_run = Frame(root)
frame_run.pack(fill="x", padx=5, pady=5)
btn_close = Button(frame_run, padx=5, pady=5, text="종료", width=12, command=root.quit)
btn_close.pack(side="right", padx=5, pady=5)
btn_start = Button(frame_run, padx=5, pady=5, text="시작", width=12)
btn_start.pack(side="right", padx=5, pady=5)
root.resizable(False,False) # x너비, y 변경 불가
root.mainloop()
주의사항
- frame 간의 side, fill, expand, pad 등의 option 으로 시각적으로 깔끔하게 구성하는 능력이 필요할 것 같다.
20-3 주요 설정
- opt_width = ["원본유지", "1024", "800", "640"]
- cmb_width = ttk.Combobox(frame_option, state="readonly", values = opt_width, width=10)
: state = "readonly" 를 통해 읽기 권한만 할당하여 사용자가 만들 수 있는 오류 요소를 제거한다.
: Combobox의 valus 값을 리스트를 통해 전달 할 수 있다.
- cmb_space.current(0)
: 해당 리스트의 index 0 번째 값을 기본 값으로 설정
[Python 파이썬 독학 활용2편 3일차] GUI(tkinter) - 3-3 (0) | 2021.08.05 |
---|---|
[Python 파이썬 독학 활용2편 3일차] GUI(tkinter) - 3-2 (0) | 2021.08.04 |
[Python 파이썬 독학 활용2편 2일차] GUI(tkinter) - 2-4 (0) | 2021.08.01 |
[Python 파이썬 독학 활용2편 2일차] GUI(tkinter) - 2-3 (0) | 2021.08.01 |
[Python 파이썬 독학 활용2편 2일차] GUI(tkinter) - 2-2 (0) | 2021.08.01 |
댓글 영역