2015-05-14 1 views
1

Как я могу изменить текст label_1, чтобы указать файл I select in browse_for_file_1? Я пытался использовать различные методы, но я просто не могу заставить графический интерфейс обновляться. Я думаю, это может быть потому, что это в кадре внутри рамки?Как изменить текст ярлыка на имя файла при нажатии кнопки в Python?

import Tkinter as tk 
import tkFileDialog 

root = tk.Tk() 

#Frames 
frame_1 = tk.Frame(root) 
frame_1.pack() 

def browse_for_file_1(): 
    file_name_1 = tkFileDialog.askopenfilename(parent=root,title='Open 1st File') 
    print file_name_1 
    label_1.config(text=file_name_1) 
    root.update() 



#Browse 1 
browse_button_1 = tk.Button(frame_1, text='Browse for 1st File', width=25, command=browse_for_file_1).pack(side=tk.LEFT, pady=10, padx=10) 
label_1 = tk.Label(frame_1, fg="red", text="No file selected.") 
label_1.pack(side=tk.RIGHT, pady=10, padx=10) 

#Quit Button 
quit = tk.Button(root, text='QUIT', width=25, fg="red", command=root.destroy).pack(pady=10, padx=10) 

root.title("Zero Usage") 
root.mainloop() 
+0

Извиняюсь, я должен был быть более четким. Прежде всего я попробовал «textvariable» для текста метки. Затем я попытался «label_1.config (текст =« Пример ») и« root.update() »после каждого из них. Да, абсолютно ничего не происходит. Нет ошибок, но это явно не работает. –

+0

Это минимальный пример. –

ответ

4

Изменить Ваш звонок:

browse_button_1 = tk.Button(frame_1, text='Browse for 1st File', width=25, command=lambda:browse_for_file_1(label_1)).pack(side=tk.LEFT, pady=10, padx=10)

Тогда ваша функция может быть:

def browse_for_file_1(label_1): 
    file_name_1 = tkFileDialog.askopenfilename(parent=root,title='Open 1st File') 
    label_1.config(text=file_name_1) 
    # or label_1.config({'text':file_name_1}) 
+0

Удивительно, спасибо. –

Смежные вопросы