我正在编写一些代码,用户需要能够选择程序将运行的文件.我创建了一个允许用户选择文件的浏览按钮,但是当你点击'okay'时,程序的其余部分都没有意识到有输入.选择文件后,还应在浏览栏中自动输入文件名.有什么建议?
from Tkinter import *
class Window:
def __init__(self, master):
#Browse Bar
csvfile=Label(root, text="File").grid(row=1, column=0)
bar=Entry(master).grid(row=1, column=1)
#Buttons
y=7
self.cbutton= Button(root, text="OK", command=master.destroy) #closes window
y+=1
self.cbutton.grid(row=10, column=3, sticky = W + E)
self.bbutton= Button(root, text="Browse", command=self.browsecsv)
self.bbutton.grid(row=1, column=3)
#-------------------------------------------------------------------------------------#
def browsecsv(self):
from tkFileDialog import askopenfilename
Tk().withdraw()
filename = askopenfilename()
#-------------------------------------------------------------------------------------#
import csv
with open('filename', 'rb') as csvfile:
logreader = csv.reader(csvfile, delimiter=',', quotechar='|')
rownum=0
for row in logreader:
NumColumns = len(row)
rownum += 1
Matrix = [[0 for x in xrange(NumColumns)] for x in xrange(rownum)]
csvfile.close()
root = Tk()
window=Window(root)
root.mainloop()
Run Code Online (Sandbox Code Playgroud)
你也可以使用tkFileDialog ..
import Tkinter,tkFileDialog
root = Tkinter.Tk()
file = tkFileDialog.askopenfile(parent=root,mode='rb',title='Choose a file')
if file != None:
data = file.read()
file.close()
print "I got %d bytes from this file." % len(data)
Run Code Online (Sandbox Code Playgroud)
filename = askopenfilename()仅在此范围内已知,您必须返回它或以任何方式使用它。
请参阅此网站了解更多示例:
Tkinter.Button(self, text='Browse', command=self.askopenfile)
Run Code Online (Sandbox Code Playgroud)
...
def askopenfile(self):
return tkFileDialog.askopenfile(mode='r', **self.file_opt)
Run Code Online (Sandbox Code Playgroud)
编辑
布莱恩·奥克利当然是对的!这就是我说的“以任何方式使用它”时的意思;)有时您选择一个文件名,有时您只需使用filename.
这个怎么样?
from Tkinter import *
import csv
class Window:
def __init__(self, master):
self.filename=""
csvfile=Label(root, text="File").grid(row=1, column=0)
bar=Entry(master).grid(row=1, column=1)
#Buttons
y=7
self.cbutton= Button(root, text="OK", command=self.process_csv)
y+=1
self.cbutton.grid(row=10, column=3, sticky = W + E)
self.bbutton= Button(root, text="Browse", command=self.browsecsv)
self.bbutton.grid(row=1, column=3)
def browsecsv(self):
from tkFileDialog import askopenfilename
Tk().withdraw()
self.filename = askopenfilename()
def process_csv(self):
if self.filename:
with open(self.filename, 'rb') as csvfile:
logreader = csv.reader(csvfile, delimiter=',', quotechar='|')
rownum=0
for row in logreader:
NumColumns = len(row)
rownum += 1
Matrix = [[0 for x in xrange(NumColumns)] for x in xrange(rownum)]
root = Tk()
window=Window(root)
root.mainloop()
Run Code Online (Sandbox Code Playgroud)
这还有很多工作要做,但至少在确定文件名称之前您不会尝试打开文件。
| 归档时间: |
|
| 查看次数: |
50667 次 |
| 最近记录: |