UI만들기
개인적으로 손으로 그리며 생각을 정리한다.....옛날 사람이라 손이 편하다.
기본적인 버튼이나 Lable등을 구성하고, Frame은 보통 가로를 기준으로 나눠서 생성한다.(파란색 동그라미 영역)
이 부실한 설계도를 한번 그리고 나면 코딩 중간 중간 눈에도 쉽게 들어오고
항목을 추가 할 때도 생각보다 큰 도움이 된다.ㅋㅋ
: 설계도 대로 잘 만들었다. ㅋㅋㅋ 그런데 조금 어색하고 미흡한 부분이 보이기 시작해서
설계도에는 누락되었던 항목 이름 등 Lable을 추가했다.
하지만 아직 뭔가 부족하다. 그래서 1차 수정을 시작
2-1. 날짜 검색 시, 예시 문구 추가
2-2. zip 파일 생성 후, 다운로드에 사용한 폴더 삭제 유무 check
: 기본적으로 삭제되어야 하지만, 확인 작업등이 필요할까봐 옵션 생성
2-3. 생성된 압축 파일 경로 열기 추가
: 생성된 파일 확인하기 위해서
2-4. 오류 메세지, 로그 상태 표기창 추가
tkinter의 기능들에서 막힌다면 이전 글을 참고해보자.
https://whosetech.tistory.com/32
https://whosetech.tistory.com/35
https://whosetech.tistory.com/39
from tkinter import *
import tkinter.ttk as ttk
def load_target_directory():
pass
def search_target_files():
pass
def target_file_oepn():
pass
def target_file_del():
pass
def target_file_zip():
pass
def open_root_folder():
pass
def backup_quit():
pass
root = Tk()
root.title("New File Backup To ZIP")
root.geometry("400x600") # 가로 X 세로 / 대문자X 하면 실행안됨
root.resizable(True,True)
directory_frame = Frame(root)
directory_frame.pack(fill="x", padx=5, pady=15)
directory_frame1 = Frame(directory_frame)
directory_frame1.pack(fill="x", padx=5, pady=15)
target_directory_oepn_desc = Label(directory_frame1, text="1_Backup 경로 불러오기", anchor="w")
target_directory_oepn_desc.pack(fill="x", padx=5)
btn_target_directory_path = Button(directory_frame1, text="찾아보기", width=10, command=load_target_directory)
btn_target_directory_path.pack(side="left", padx=5)
global target_dest_path
target_dest_path = Entry(directory_frame1, state="disable")
target_dest_path.pack(side="right", fill="x",padx=5,expand=True)
# body frame
body_frame = Frame(root)
body_frame.pack()
body_frame0 = Frame(body_frame)
body_frame0.pack()
body_frame1 = Frame(body_frame)
body_frame1.pack()
body_frame2 = Frame(body_frame)
body_frame2.pack()
body_frame3 = Frame(body_frame)
body_frame3.pack()
body_frame4 = Frame(body_frame)
body_frame4.pack()
body_frame5 = Frame(body_frame)
body_frame5.pack()
body_frame6 = Frame(body_frame)
body_frame6.pack()
body_frame7 = Frame(body_frame)
body_frame7.pack()
###########
search_period = Label(body_frame1,text="2. 검색 날짜 조회 : D - ", anchor="w", width=20)
search_period.pack(side=LEFT)
search_period_input = Entry(body_frame1, width=10)
search_period_input.pack(side=LEFT, expand=True, fill="both")
day_label = Label(body_frame1,text=" 일", anchor="w", width=5)
day_label.pack(side=LEFT)
# D- ? 일 수정 및 신규 파일 검색 버튼
btn_search_target_files = Button(body_frame1, text="대상 조회", width=14, command=search_target_files)
btn_search_target_files.pack(side="left", fill ="both", padx=2, expand=True)
# 검색 시간 설명
period_info = Label(body_frame2,text="*ex) D-0 : 오늘 / D - 1 : 어제 ~ 오늘", anchor="w", width=50)
period_info.pack(side="top")
# 대상파일 리스트 view
target_file_list_view_frame = Frame(body_frame2)
target_file_list_view_frame.pack(fill="both", padx=5, pady=5)
scrollbar_target_file_x = Scrollbar(target_file_list_view_frame, orient="horizontal")
scrollbar_target_file_x.pack(side="bottom", fill="x")
scrollbar_target_file_y = Scrollbar(target_file_list_view_frame)
scrollbar_target_file_y.pack(side="right", fill="y")
target_file_list = Listbox(target_file_list_view_frame, selectmode="extended", height=5, width= 50 ,xscrollcommand=scrollbar_target_file_x.set, yscrollcommand=scrollbar_target_file_y.set)
target_file_list.pack(side="left", fill="both", expand=True)
scrollbar_target_file_x.config(command=target_file_list.xview)
scrollbar_target_file_y.config(command=target_file_list.yview)
format_info = Label(body_frame2,text="대상 확장자 : jpg, png, bmp, pdf, xlsx", anchor="w", width=50)
format_info.pack(side=BOTTOM)
# 파일 열기 / 파일 삭제
# # 항목 확인 버튼
btn_target_file_oepn = Button(body_frame3, text="파일 확인", width=14, command=target_file_oepn)
btn_target_file_oepn.pack(side="left", fill ="both", padx=2, pady= 10, expand=True)
# # 항목 제거 버튼
btn_target_file_del = Button(body_frame3, text="파일 제거", width=14, command=target_file_del)
btn_target_file_del.pack(side="right", fill ="both", padx=2, pady= 10, expand=True)
# 압축 후, temp 폴더 삭제 유무
input_temp_del_value = IntVar()
input_temp_del = Checkbutton(body_frame4, text="압축 후, temp 폴더 삭제(Check : 삭제 / Uncheck : 유지)", variable=input_temp_del_value)
input_temp_del.pack(anchor="w")
# 압축 버튼
btn_target_file_zip = Button(body_frame5, text="temp 폴더 압축하기", width=30, command=target_file_zip)
btn_target_file_zip.pack(side="right", fill ="both", padx=2, pady=5, expand=True)
# 압축파일 경로 열기
btn_open_root_folder = Button(body_frame6, text="temp.zip 경로 열기", width=30, command=open_root_folder)
btn_open_root_folder.pack(side="right", fill ="both", padx=2, pady=5, expand=True)
# backup 프로그램 종료
btn_backup_exit = Button(body_frame7, text="프로그램 종료하기", width=30, command=backup_quit)
btn_backup_exit.pack(side="right", fill ="both", padx=2, pady=5, expand=True)
##############
# log_and_button frame(right)
body_frame = Frame(body_frame)
body_frame.pack(side="right", fill="x", anchor="n")
bottom_frame = Frame(root)
bottom_frame.pack()
bottom_frame1 = Frame(bottom_frame)
bottom_frame1.pack()
# log frame
log_title_desc = Label(bottom_frame1, text="※ Log 및 진행상태 확인", anchor="w", width=45)
log_title_desc.pack(side="top")
log_frame = Frame(body_frame)
log_frame.pack()
bottom_frame2 = Frame(bottom_frame)
bottom_frame2.pack()
scrollbar_log_text_view_x = Scrollbar(bottom_frame2, orient="horizontal")
scrollbar_log_text_view_x.pack(side="bottom", fill="x")
scrollbar_log_text_view_y = Scrollbar(bottom_frame2)
scrollbar_log_text_view_y.pack(side="right", fill="y")
log_text_view = Text(bottom_frame2, height=20, width=50, xscrollcommand=scrollbar_log_text_view_x.set, yscrollcommand=scrollbar_log_text_view_y.set)
log_text_view.pack(fill="x",padx=5, pady=5, ipady=4)
scrollbar_log_text_view_x.config(command=log_text_view.xview)
scrollbar_log_text_view_y.config(command=log_text_view.yview)
root.mainloop()
python 백업 프로그램 만들기 2 - 기능2 (0) | 2022.01.15 |
---|---|
python 백업 프로그램 만들기 2 - 기능1 (0) | 2022.01.13 |
python 백업 프로그램 만들기 0 intro (0) | 2022.01.12 |
댓글 영역