2015-03-27 2 views
3

Я новичок в tkinter, мой код может работать, но мне нужен мой текстовый виджет, чтобы отображать только переменную результата в функции callback(), не включая метод «askopenfilename» ,Переадресация вывода моей консоли на мой виджет текстовой области Tkinter

from Tkinter import * 
    from tkFileDialog import * 
    import os 

    root = Tk() 
    root.geometry('900x700') 
    path = StringVar() 

    #browse pdf files 
    def callback(): 
    f = askopenfilename(title='Open Files',initialdir='C:\Users\shantini\Desktop\PDF', 
         filetypes=[('Files of type:','*.PDF'),('Files of type:','*.pdf')]) 
    path.set(f) 
    result = os.popen('pdfid.py'+' '+f).read() 
    return result 

#labelframe(text pdf output) 
label=LabelFrame(root, text="PDF Analysis Output") 
label.pack(side=BOTTOM, anchor=W, fill=BOTH, expand=YES) 
text = Text(label,bg='white') 
text.pack(fill=BOTH, expand=YES) 
text.insert(INSERT,callback()) 

root.mainloop() 
+0

Ваше форматирование выключено - у вас есть бродячий кавычек где-то – Dannnno

+0

У вас, похоже, есть некоторые проблемы с отступом. –

ответ

0

Если вы отключили текстовый виджет, вы делаете его доступным только для чтения, поэтому вы не можете добавлять к нему текст. Поэтому, чтобы добавить текст, сделать его нормальным или удалить параметр состояния. Я изменил свой обратный вызов, чтобы отразить комментарии:

def callback(): 
    f = askopenfilename(title='Open Files',initialdir='/tmp', 
         filetypes=[('Files of type:','*.PDF'),('Files of type:','*.pdf')]) 

    result = open(f).read() # I also changed this as I dont have `pdfid.py` to test the code 
    text_area.insert(INSERT, result) 
    print result 

Я немного изменить входные файлы и папки, как я работаю в Linux и использовать косяк окна путей. Надеюсь это поможет.

+0

Спасибо Marcin ваше право Мне нужно удалить «state = Disable», чтобы показать результат. Вопрос только в том, как я могу вставить результат, если он вне функции. –

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