将我的控制台输出重定向到我的Tkinter文本区域小部件

时间:2015-03-27 07:04:49

标签: python tkinter

我是tkinter的新手,我的代码可以运行,但我需要我的文本小部件只显示callback()函数中的结果变量,不包括'askopenfilename'方法。

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()

1 个答案:

答案 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中工作并且无法使用Windows路径。希望这会有所帮助。