이제 기능을 파헤쳐 보겠다.
버튼별로 기능을 구현할 예정이므로 이미 UI를 설계하며 해당 함수명은 작성되었다.
backup 경로 불러오기는 해당 폴더를 검색하는 '찾아보기' 버튼과 해당 경로를 보여주는 Entry 영역으로 구성되어 있다.
이미 만들어진 모듈을 활용하기 때문에 훨씬 빠르고 완성도 있게 프로그램을 작성할 수 있다.
filedialog 모듈을 이용하면 윈도우 검색창에서 폴더를 선택 하듯 지정할 수 있고,
우리는 이 기능을 이용해
① 찾아보기 버튼을 누리면 선택된 폴더를 scan_wait_folder 라는 변수에 저장
② scan_wait_folder 의 경로를 Entry에 입력한다.
'찾아보기 ' 버튼 함수
from tkinter import filedialog # 폴더 open 기능 사용
def load_target_directory():
global scan_wait_folder
scan_wait_folder = filedialog.askdirectory(parent=root, initialdir='.\\', title='대상 폴더를 선택해주세요.' )
# # 사용자가 선택한 파일 목록 보여주기
# filedialog.askdirectory 창에서 취소 버튼 누리면 화면 복귀
if scan_wait_folder == '':
return
# filedialog.askdirectory 창에서 선택하면 해당 경로 입력
else:
target_dest_path.config(state="normal")
target_dest_path.delete(0, END)
target_dest_path.insert(END, scan_wait_folder)
target_dest_path.config(state="disable")
#print(scan_wait_folder)
약간의 팁을 포함하면,
- scan_wait_folder의 변수 값은 이후에도 사용되므로 전역변수로 선언하였다.
- 폴더를 선택하지 않고 취소를 누를 경우, Error가 발생하게 되는데,
해당 Error를 방어하기 위해 취소가 될 경우 main UI로 retrun을 진행하였다.
- 폴더를 선택하게 되면 해당 값을 ② target_dest_path 라는 Entry에 입력을 하여야 하는데,
임의로 수정되어 경로가 달라지는 오류를 제거 하기 위해 비활성화 상태로 유지한다.
세부 순서를 생각해보면
기본 : target_dest_path 비활성화(수정 금지 상태)
폴더 미선택시 : UI로 return
폴더 신택시, Entry(target_dest_path)가 입력 가능하도록 state 변경
Entry(target_dest_path) 기존의 값 모두 삭제
Entry(target_dest_path)에 scan_wait_folder 값을 입력
Entry(target_dest_path) 를 수정 불가능 하도록 다시 비활성화
해당 폴더 선택 시,
아래처럼 Entry 내에 값이 입력된 상태로 비활성화됨을 알 수 있다.
python 백업 프로그램 만들기 2 - 기능2 (0) | 2022.01.15 |
---|---|
python 백업 프로그램 만들기 1 - UI (0) | 2022.01.12 |
python 백업 프로그램 만들기 0 intro (0) | 2022.01.12 |
댓글 영역