2016-12-06 30 views
0

PIL을 사용하여 이미지를 검사하고 크기, 색상, dpi 등을 반환하는 프로그램을 만들었지 만 지금은 코드를 GUI에 넣으려고합니다. 시스템을 사용하여 사용자를 돕습니다.Python3 및 tkinter GUI 버튼을 사용하여 파일 열기

기능에 askopenfilename()을 사용했지만 새로운 파일을 열 때 문제가 발생합니다. 프로그램을 시작한 후 함수를 실행하고 파일을 선택하고 잘 작동합니다. 단추를 클릭하여 새 파일을 열면 새 파일을 선택할 수 있지만 표시된 정보는 변경되지 않습니다.

새 파일을 선택한 후에 어떻게 새 정보로 화면을 새로 고칠 수 있습니까?

def openPattern(): 
    global fileName 
    path = askopenfilename() 
    fileOpen = open(path, 'r') 
    fileName = os.path.basename(path) 

if __name__ == '__main__': 
    root = Tk() 
    root.title("Art Intake | Developer Build") 
    ms = MainScreen(root) 
    ms.config(bg="grey") 

    openPattern() 
    pattern = Button(ms, text="Choose a file", command=openPattern, 
       highlightbackground='grey') 
    pattern.pack() 
    pName = Label(ms, text="Pattern Name: " + str(fileName), 
       bg='grey') 
    pName.pack() 

    read = Button(ms, text="ReadMe", command=openRM, 
       highlightbackground='grey') 
    read.place(rely=1.0, relx=1.0, x=-25, y=-15, anchor=SE) 

    quit = Button(ms, text="Quit", command=ms.quit, 
      highlightbackground='grey') 
    quit.place(rely=1.0, relx=1.0, x=-25, y=-45, anchor=SE) 

root.mainloop() 
+1

쇼 코드입니다. 코드가 없으면 너무 광범위한 질문입니다. BTW : 어쩌면 당신은 약간의 오류 메시지가 나타나고 작동하지 않습니다 - 콘솔/터미널/cmd.exe/powershell에서 실행하십시오 – furas

+0

show [minimal, but complete] (http://www.stackoverflow.com/help/mcve)) 코드. 그리고 답을 편집하고, 주석에 코드를 게시하지 마십시오. –

+0

질문을 편집하고 코드를 추가하십시오. 코멘트는 코드를위한 좋은 장소가 아닙니다. – furas

답변

0

시작시 라벨 pName가 생성 및 라벨 표시 할 fileName을 가지고 있습니다 전에 openPattern() 실행 : 여기 내가 가지고있는 코드입니다. 하지만 나중에 레이블의 텍스트를 수동으로 변경해야합니다.

pName['text'] = "Pattern Name: " + fileName 

먼저 나는 빈 레이블을 만들고 나중에 내가 openPattern()이 때문에 기존 라벨에 텍스트를 업데이트 할 수 있습니다 실행합니다. 단추를 클릭하면 openPattern()이 동일하게 작동합니다. 기존 레이블의 텍스트를 업데이트합니다. (코드 incomplet 때문에 테스트하지)

def openPattern(): 
    path = askopenfilename() 
    fileOpen = open(path, 'r') 
    fileName = os.path.basename(path) 

    pName['text'] = "Pattern Name: " + fileName 

if __name__ == '__main__': 
    root = Tk() 
    root.title("Art Intake | Developer Build") 

    ms = MainScreen(root) 
    ms.config(bg="grey") 

    pattern = Button(ms, text="Choose a file", command=openPattern, 
       highlightbackground='grey') 
    pattern.pack() 
    pName = Label(ms, bg='grey') 
    pName.pack() 

    read = Button(ms, text="ReadMe", command=openRM, 
       highlightbackground='grey') 
    read.place(rely=1.0, relx=1.0, x=-25, y=-15, anchor=SE) 

    quit = Button(ms, text="Quit", command=ms.quit, 
      highlightbackground='grey') 
    quit.place(rely=1.0, relx=1.0, x=-25, y=-45, anchor=SE) 

    openPattern() 

    root.mainloop() 
+0

이것은 내 문제를 해결하고 지금은 아름답게 작동합니다. 고맙습니다. – nmoore146