将脚本的输出打印到python中的窗口

时间:2017-07-23 11:58:52

标签: python-2.7 user-interface tkinter

我正在尝试为analyzeMFT python程序创建一个GUI。到目前为止,这就是我所拥有的

#!/usr/bin/python
  # -*- coding: utf-8 -*-


from Tkinter import *
from ttk import *
import analyzeMFT


class Example(Frame):

    def __init__(self, parent):
        Frame.__init__(self, parent)   

        self.parent = parent
        self.filename = ""        
        self.initUI()


    def initUI(self):

        self.parent.title("Mtf Analyzer")

        #initializing and configuring menubar

        menubar = Menu(self.parent)
        self.parent.config(menu=menubar)

        fileMenu = Menu(menubar)
        fileMenu.add_command(label="Open file", command=self.fileOpen)
        fileMenu.add_command(label="Exit", command=self.onExit)
        menubar.add_cascade(label="File", menu=fileMenu)


        #specify grid row and column spaces

        self.pack(fill=BOTH, expand=True)

        self.columnconfigure(1, weight=1)
        self.columnconfigure(3, pad=7)
        self.rowconfigure(3, weight=1)
        self.rowconfigure(5, pad=7)

        lbl = Label(self, text="File Name")
        lbl.grid(row=1, column=0, sticky=W, pady=4, padx=5)

        filename_area = Entry(self)
        filename_area.grid(row=1, column=1, columnspan=3, 
            padx=5)

        analize_button = Button(self, text="Analize",  command=self.processFile)
        analize_button.grid(row=1, column=4, padx=5)

        area = Text(self)
        area.grid(row=2, column=1, columnspan=2, rowspan=4, 
            padx=5, sticky=E+W+S+N)



        #configure the raw output view


    def onExit(self):
        self.quit()

    #this function selects and opens the file to analize
    def fileOpen(self):
        from tkFileDialog import askopenfilename

        Tk().withdraw() 
        self.filename = askopenfilename() 

        #populate the filename field



    #do the processing of the file obtained. Populate the file NAME entry or
    #send the filename to the analyzeMFT.py
    def processFile(self):
        filei = "-f "+self.filename
        arguements = [filei, '-o '+self.filename+' .csv']
        analyzeMFT.main( arguements )


    #get and set methods for the entry field
    def get(self):
        return self.filename_area.get()

    def set(self, value):
        filename_area.set(value)


def main():

    root = Tk()
    root.geometry("250x150+300+300")
    app = Example(root)
    root.mainloop()  


if __name__ == '__main__':
    main()

此代码创建了一个gui,我可以使用analyzeMFT程序选择要分析的文件。有两个问题。

1.analyzeMFT意味着在命令行上运行。我无法将从GUI获取的文件名传递给analyzeMFT.py以下是analyzeMFT.py的内容

    #!/usr/bin/python

try:
    from analyzemft import mftsession 
except:
    from .analyzemft import mftsession

def main(): 
    session = mftsession.MftSession()
    session.mft_options()
    session.open_files()
    session.process_mft_file()

if __name__ == "__main__":
    main()

接下来,当我在cmd中运行analyzerMFT并启用调试模式时,它会在屏幕上打印每个细节。如何将其指向我在下面显示的窗口 enter image description here

我希望它看起来像这样 enter image description here

很抱歉,如果说明很长。我已经工作了好几天了。

1 个答案:

答案 0 :(得分:1)

您可以在文本框中使用insert(),而不是像通常用于向控制台显示结果一样使用打印。

编辑:

首先改变:

area = Text(self)
area.grid(row=2, column=1, columnspan=2, rowspan=4, 
            padx=5, sticky=E+W+S+N)

要:

self.area = Text(self)
self.area.grid(row=2, column=1, columnspan=2, rowspan=4, 
            padx=5, sticky=E+W+S+N)

这样您的文本框就会被设置为我们可以使用的类属性。

然后使用:

self.area.delete(1.0, "end") # to clear text box 
self.area.insert("end", your_output variable or string) # to insert content