PIL

2014-09-04 4 views
0

을 사용하여 파일 형식을 추가하지 않고 이미지를 표시합니다. 파일이있는 경우 폴더를 검색하고 새 창에 그림을 표시 할 수있는 기능을 작성했지만 항상 이미지 파일 형식이나 확장명을 추가해야합니다 이 기능은 작동 할 수 있습니다.PIL

이 당신처럼 spam을 열 수 없습니다 그래서 그 이름의 파일이 spam.gif라는 경우 내가 .gif 또는 .png

from tkinter import * 
from PIL import * 

def display_pix(): 
    hmm = Toplevel(window) 
    hmm.geometry('300x300') 
    label = Label(hmm,) 
    label.pack() 

    PhotoImage(  file = 'C:\\Python34\\' + e.get()) 
    logo = PhotoImage(file = 'C:\\Python34\\' + e.get()) 
    label.img = logo 
    label.config(image = label.img) 

window = Tk() 
e = Entry( window, width= 20) 
b = Button(window, text = 'search',command = display_pix) 
e.place(x = 50, y = 30) 
b.place(x = 70, y = 50) 

window.mainloop() 
+0

사용자가 확장 프로그램을 입력하지 않아도되고 확장 프로그램이 포함 된 가능한 모든 이미지 파일을 찾으려면 사용자가 입력 한 내용은 무엇입니까? – abarnert

+0

참고 사항 : 들여 쓰기에는 4자를 사용하고 1자를 사용하지 마십시오. 따라서 함수의 일부분과 함수 외부의 내용을 알려주는 것은 매우 어렵습니다. 특히'window = Tk()'에서 마지막에 이르는 코드가'display_pix()'안에 있지 않아야한다고 잘못 생각한 것 같습니다. – abarnert

답변

0

같은 확장을 무시하고 해결할 수있는 방법입니다. (예, Windows 탐색기는 이것을 제한적으로 만 숨기려고하지만 같은 일을하고 싶다면 Windows 탐색기와 동일한 작업을 수행해야합니다.)

사용자를 원한다면 spam을 입력하고 프로그램이 자동으로 spam.gif 또는 spam.jpg 또는 spam.png을 열려면 원하는 패턴과 일치하는 파일을 명시 적으로 찾아야합니다. 또한 두 개의 파일이 발견되거나 이미지가 전혀없는 spam.txt 파일을 찾으면 무엇을해야할지 결정해야합니다. 또는 spam.*을 열어보십시오. 가장 간단한 버전 (가장 먼저 열려고 시도하면 spam.*)이 열립니다.)은 이것이다 :

def open_image_file(path, name): 
    for fullname in os.listdir(path): 
     if fnmatch.fnmatch(f, name + '.*'): 
      return PhotoImage(file=os.path.join(path, fullname)) 

지금 당신은이 작업을 수행 할 수 있습니다

logo = open_image_file(r'C:\Python34', e.get()) 

(spam.*를라는 이름의 파일이 발견되지 않으면 None하면, 말, 텍스트 파일이나 될 겁니다. 실행 파일이 발견되어 PhotoImage에서 예외가 발생하면 예외가 발생합니다. 그렇지 않은 경우 logospam.* 파일의 PhotoImage이됩니다.

+0

감사합니다 abarnert ..하지만 주위에 내 길을 가야하는 것 같아요. 당신은 내가 보낸 방식과 똑같은 코드를 다시 쓸 수 있습니까? ... ... 정말 고마워요. –

+1

@JoeyDanielDarko : 혼란 스러워요. 뭔가 구체적인 것을 물어보십시오. 누군가가 코드를 작성하여 작동 원리를 이해할 필요가 없도록하려면 StackOverflow에서 묻지 말고 컨설턴트를 고용해야합니다. – abarnert