我正在尝试为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并启用调试模式时,它会在屏幕上打印每个细节。如何将其指向我在下面显示的窗口
很抱歉,如果说明很长。我已经工作了好几天了。
答案 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