파이썬 그림확대

조회수 3539회

from tkinter import *

from tkinter.filedialog import *

from tkinter.simpledialog import*

함수 선언 부분

def func_open() :

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_zoom() :

value = askinteger("확대배수","확대할 배수를 입력하세요(2~8)",minvalue = 2 ,maxvalue = 6 )
global photo
photo = photo.zoom(value,value)               #확대

def func_subsample() :

value = askinteger("축소배수","축소할 배수를 입력하세요(2~8)",minvalue = 2 ,maxvalue = 6 )
global photo
photo = photo.subsample(value,value)          #축소

메인 코드 부분

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)

filMenu = Menu(mainMenu) #새로운 상위메뉴생성

mainMenu.add_cascade(label = "이미지 효과", menu = filMenu) #상위메뉴 이름

filMenu.add_command(label = "확대하기", command = func_zoom) #하위메뉴 생성

filMenu.add_separator() #하위메뉴사이에 줄생성

filMenu.add_command(label = "축소하기", command = func_subsample) #하위메뉴생성

window.mainloop()

파일을 선택해서 상위메뉴 이미지효과를 누르고 하위메뉴 확대하기나 축소하기를 눌러 메세지박스가 뜨게한후 박스안에 입력한 수만큼 확대하고 싶은데 메세지박스에 숫자를 입력하는것까진 되는데 그후로 확대나 축소가 안됩니다 어느부분에서 잘못된것인지 알려주실수 있을까요

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • 파일을 열어오는 func_open()에서도 photo를 global photo로 변수 하나 만들어주시고

    func_zoom()과 func_subsample()을

    def func_zoom() :

    value = askinteger("확대배수","확대할 배수를 입력하세요(2~8)",minvalue = 2 ,maxvalue = 8 )
    global photo
    photo = photo.zoom(value,value)               #확대
    pLabel.configure(image=photo)
    pLabel.image=photo
    

    def func_subsample() :

    value = askinteger("축소배수","축소할 배수를 입력하세요(2~8)",minvalue = 2 ,maxvalue = 8 )
    global photo
    photo = photo.subsample(value,value)          #축소
    pLabel.configure(image=photo)
    pLabel.image=photo
    

    이런식으로 추가해주시면 됩니다. 사진을 늘린다음에 사진을 다시 안그려주셔서 안되는것 같네요

    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)