使用GUI python浏览要打开和运行的文件
嗨,我有一些python脚本。我需要创建一个带有几个按钮的GUI,通过浏览打开这些文件。我必须通过单击GUI按钮来运行这些脚本,并且应该将输出写入n excel工作表。我尝试了下面的代码,但有了它我就可以读取文件了!请帮忙? 多谢各位使用GUI python浏览要打开和运行的文件,python,Python,嗨,我有一些python脚本。我需要创建一个带有几个按钮的GUI,通过浏览打开这些文件。我必须通过单击GUI按钮来运行这些脚本,并且应该将输出写入n excel工作表。我尝试了下面的代码,但有了它我就可以读取文件了!请帮忙? 多谢各位 from Tkinter import * from tkFileDialog import askopenfilename def callback(): r = open(askopenfilename(),
from Tkinter import *
from tkFileDialog
import askopenfilename
def callback():
r = open(askopenfilename(),'r')
a = Button(text='click me', command=callback)
a.pack()
mainloop()
下面的代码是一个简单的示例,它从选定的输入文件中读取每一行,然后将其写入名为output.xls的新excel文件。它使用优秀的工具创建excel文件。您还可以选择使用模块创建csv文件,该模块是python标准库的一部分,excel也可以读取该库。使用xlwt的优点是,您可以应用格式化、合并单元格、公式以及作为xls文件格式一部分的许多其他功能
import xlwt
from Tkinter import *
from tkFileDialog import askopenfilename
def callback():
filename = askopenfilename()
wb = xlwt.Workbook()
ws0 = wb.add_sheet('Sheet1')
with open(filename, 'r') as f:
for i, line in enumerate(f):
ws0.write(i, 0, line.strip())
wb.save('output.xls')
errmsg = 'Error!'
a = Button(text='click me', command=callback)
a.pack()
mainloop()
在callback()内部,使用execfile(“abc.py”)执行文件,而不是打开文件
将动作绑定到按钮Marwan感谢您提供有价值的建议来尝试xlvt!但我的问题实际上是运行脚本。是的,我可以阅读文件,甚至打印所有的行。运行时出现错误“Line\u Read=linecache.getline(文件名,循环计数器)Name错误:未定义全局名称“linecache”,并且linecache已导入。如果您对此错误有任何想法,请提供帮助您的python安装可能有问题。你的代码运行得很好,没有错误。尝试并重新安装python,同时在另一台计算机上尝试您的代码作为测试。虽然此代码可能会回答问题,但提供有关如何和/或为什么解决问题的其他上下文将提高答案的长期价值。@DonaldDuck是的,现在检查我编辑的代码。选择文件的代码和选择目录的代码。
def callback():
abc = askopenfilename()
execfile("abc.py")
import Tkinter, tkFileDialog
root = Tkinter.Tk()
root.withdraw()
dirname=tkFileDialog.askdirectory(parent=root,initialdir="/",title='Please select a directory')
do something with dirname
print dirname
#This code for file selection:
from Tkinter import Tk
from tkFileDialog import askopenfilename
Tk().withdraw() # we don't want a full GUI, so keep the root window from appearing
filename = askopenfilename() # show an "Open" dialog box and return the path to the selected file
print(filename)