(수업내용 : 대화상자의 생성과 사용
-
파이썬은 대화상자를 몇 개 제공한다. 기본적인 메시지창을 표시하는 messagebox.showinfo()는 앞에서 사용했었다. 이외에도
숫자나 문자를 입력받을 수 있도록 tkinter.simpledialog 모듈을 임포트한 후 askinteger() 및 askstring() 등을 사용할 수 있다.
간단한 코드로 확인해 보자.
from tkinter import
from tkinter.simpledialog import *
window = Tk()
window.geometry("400x100")
label1 = Label (window, text = "입력된 값")
label1.pack()
value = askinteger("확대배수", "주사위 숫자(1~6)을 입력하세요", minvalue = 1, maxvalue = 6)
label1.configure(text = str(value))
window.mainloop(())
입력창을 사용하려고 tkinter.simpledialog 모듈을 임포트한다. 그리고 레이블을 하나 준비한다. askinteger(“제목”, “내용”, 옵션)
함수로 정수를 사용자로부터 입력을 받는다. 옵션 중에 minvalue는 최솟값이고, maxvalue는 최댓값이다. 이 값을 벗어나서 입
력하면 경고창을 표시하며 입력되지 않는다.입력받은 숫자를 문자열로 변경해서 레이블에 쓴다. 실수를 입력 받으려면 askfloa
t() 함수를 사용하고, 문자열을 입력 받으려면 askstring() 함수를 사용하면 된다.파일을 열거나 저장할 때 표시하는 대화상자도
있다. tkinter.filedialog 모듈을 임포트한 후 askopenfilename()이나 asksaveasfile() 함수를 사용하면 된다.
대화상자의 생성과 사용
- 그림 파일인 GIF 파일을 선택하는 코드이다. 코드로 사용 방법을 확인해 보자.
from tkinter import *
from tkinter.filedialog import *
window = Tk()
window.geometry("400x100")
label1 = Label(window, text = "선택된 파일 이름")
label1.pack()
filename = askopenfilename(parent=window, filetypes = (("GIF 파일", ”*.gif”), ("모든 파일", "*.*")))
labeli.configure(text = str(filename))
window.mainloop()) tkinter.filedialog 모듈을 임포트하고, askopenfilename() 함수를 사용한다.
함수의 매개변수 중 parent는 부모 윈도우를 지정한다. 관심있게 볼 것은
filetypes인데, 값으로 튜플을 받는다.
그리고 각 튜플 안에는 다시 튜플로 ("표시할 글자”, “확장명”) 형식을 구성
한다. 첫 번째 값은 (GIF 파일”, “*.gif")이다. 그래서 실행 화면에서 오른쪽
아래를 보면 현재 GIF 파일만 표시한다. 이 부분을 클릭해서 '모든 파일’을
선택하면 모든 파일을 볼 수 있다. askopenfilename() 함수는 경로를 포함
해서 선택한 파일의 파일명을 반환한다.그리고 filename을 출력한다.
이번에는 파일을 저장하는 코드를 보자. 저장 대화상자는 매개변수가 약간 다르다.
- 위의 프로그램을 실행하면 [다른 이름으로 저장] 대화상자가 열린다. 그리고 기존에 있는 파일명을 입력하고 (저장) 버튼을 누
르면 기존 파일을 바꿀 것인지 묻는 메시지창을 표시한다. 주의할 점은 askopenfilename() 함수는 파일 경로와 파일명 문자열
만 반환하지만, asksaveasfile() 함수는 다른 정보도 함께 반환한다는 것이다. 반환된 값 중에서 name과 관련된 것이 새로 저장
할 파일명이 들어 있는 부분이다. asksaveasfile() 함수의 매개변수 중 mode="w”는 쓰기 모드라는 의미이다. 그리고 defaultex
tension=".jpg"는 특별히 확장명을 지정하지 않으면 확장명을 jpg로 붙인다는 의미이다. label1에 saveFp의 내용을 text에 대입
시켜서 출력한다. 그리고 파일을 닫는다. 그리고 실행된 이후에는 파일의 기록이 완료된다.
from tkinter import *
from tkinter.filedialog import *
window = Tk()
window.geometry("400x100")
label1 = Label(window, text = "선택된 파일 이름")
label1.pack()
saveFp = asksaveasfile(parent=window, mode="w", defaultextension=".jpg", filetypes=(("JPG 파일", "*.jpg;*.jpeg"), ("모든 파일", "*.*")))
label1.configure(text = saveFp)
saveFp.close()
window.mainloop() 오늘도 정말 좋은 강의 잘 들었습니다 .항상 친절학 자세히 알기 쉽게 강의를 해 주셔서 저도 공부하는데 많으 도움이 되고 있습니다. 항상 친절하고 자세한 강의 정말 감사합니다. 그리고 수고 많으셨습니다. 저도 강사님의 좋은 강의에 보답하기 위해 열심히 공부하도록 하겠습니다.^^ 수고하세요~