2016-12-06 3 views
0

Я создал программу, которая использует PIL для просмотра изображения и возврата размера, количества цветов, точек на дюйм и т. Д., Но теперь я хочу поместить свой код в графический интерфейс чтобы помочь пользователю.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: может быть, вы получите сообщение об ошибке, и это не сработает - поэтому запустите его в консоли/termina/cmd.exe/powershell – furas

+0

покажите [минимальное, но полное] (http://www.stackoverflow.com/help/mcve). И отредактируйте свой ответ, не отправляйте код в комментариях. –

+0

, пожалуйста, отредактируйте вопрос и добавьте код. Комментарий не подходит для кода. – furas

ответ

0

При запуске запуск openPattern() перед тем ярлык pName создаются и этикетка имеет fileName для отображения. Но позже вам придется вручную изменить текст в ярлыке.

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