5번
>
from tkinter import *
from time import *
## 전역 변수 선언 부분 ##
fnameList = ["jeju1.gif", "jeju2.gif", "jeju3.gif", "jeju4.gif", "jeju5.gif", "jeju6.gif", "jeju7.gif", "jeju8.gif", "jeju9.gif"]
photoList = [None] * 9
num = 0
## 함수 선언 부분 ##
def clickNext() :
global num
num += 1
if num > 8 :
num = 0
photo = PhotoImage(file = "gif/" + fnameList[num])
pLabel.configure(image = photo)
pLabel.image = photo
def clickPrev() :
global num
num -= 1
if num < 0 :
num = 8
photo = PhotoImage(file = "gif/" + fnameList[num])
pLabel.configure(image = photo)
pLabel.image=photo
def keyEvent(event):
global num
if event.keycode==33:
num += 1
if num > 8 :
num = 0
photo = PhotoImage(file = "gif/" + fnameList[num])
pLabel.configure(image = photo)
pLabel.image = photo
elif event.keycode==34:
num -= 1
if num < 0 :
num = 8
photo = PhotoImage(file = "gif/" + fnameList[num])
pLabel.configure(image = photo)
pLabel.image=photo
## 메인 코드 부분 ##
window = Tk()
window.geometry("700x500")
window.title("사진 앨범 보기")
btnPrev = Button(window, text = "<< 이전", command = clickPrev)
btnNext = Button(window, text = "다음 >>", command = clickNext)
window.bind("<Key>",keyEvent) #keyEvent로 Page_Up , Page_down 키 사용
photo = PhotoImage(file = "gif/" + fnameList[0])
pLabel = Label(window, image = photo)
btnPrev.place(x = 250, y = 10)
btnNext.place(x = 400, y = 10)
pLabel.place(x = 15, y = 50)
window.mainloop()
10번
>
from tkinter import *
from tkinter.filedialog import *
from tkinter.simpledialog import *
filename=""
## 함수 선언 부분 ##
def func_open() :
global filename
filename = askopenfilename(parent = window, filetypes = (("GIF 파일", "*.gif"), ("모든 파일", "*.*")))
photo = PhotoImage(file = filename)
pLabel.configure(image = photo)
pLabel.image = photo
def func_exit() :
window.quit()
window.destroy()
def func_big():
value = askinteger("확대배수", "확대할 배수를 입력하세요(2~8)", minvalue=2, maxvalue=8)
photo=PhotoImage(file=filename)
photo=photo.zoom(value,value)
pLabel.configure(image=photo)
pLabel.image = photo
def func_small():
value = askinteger("축소배수", "축소할 배수를 입력하세요(2~8)", minvalue=2, maxvalue=8)
photo = PhotoImage(file=filename)
photo=photo.subsample(value,value)
pLabel.configure(image=photo)
pLabel.image = photo
## 메인 코드 부분 ##
window = Tk()
window.geometry("400x400")
window.title("명화 감상하기")
photo = PhotoImage()
pLabel = Label(window, image = photo)
pLabel.pack(expand=1, anchor = CENTER)
mainMenu = Menu(window)
window.config(menu = mainMenu)
fileMenu = Menu(mainMenu)
mainMenu.add_cascade(label = "파일", menu = fileMenu)
fileMenu.add_command(label = "파일 열기", command = func_open)
fileMenu.add_separator()
fileMenu.add_command(label = "프로그램 종료", command = func_exit)
subMenu = Menu(mainMenu)
mainMenu.add_cascade(label = "이미지 효과", menu = subMenu)
subMenu.add_command(label = "확대하기", command =func_big)
subMenu.add_separator()
subMenu.add_command(label = "축소하기", command = func_small)
window.mainloop()
10번은 손 쉽게 구현하였지만, 5번 문제는 키보드 이벤트를 사용하지 못하여 조금 애를 먹었다.
책에서는 Page Up : <Up> , Page Down: <Down>으로만 나와 있어서 이 이벤트를 가지고 씨름을 했었는데 키가 결국 먹지 않아서 이 방법으로는 구현이 되지 않았다. 다른 블로그를 탐방해보니 keycode로 조작을 한 것을 보았다. 그래서 그것을 참조하여 수정을 한 결과 위의 keyEvent함수와 같은 함수를 만들 수 있었다. 결과는 Page Up과 Page Down키로 조작이 가능해졌다.
<Up>과 <Down>을 이용한 코드도 더 알아보고 짜봐야겠다.
'Programming Language > Python' 카테고리의 다른 글
| 문자열포맷 (0) | 2022.09.06 |
|---|---|
| 텍스트 파일 입출력 문제 오류 발생 (1) | 2020.06.16 |