3

この GUI を使用すると、ユーザーはファイル ブラウザーを開いて必要なファイルを選択し、それをフィールドの空白に表示して、[開く] を押すとファイルを開くことができます。私はpythonが初めてで、print tkFileDialog.askopenfilename()をself.filenameに配置しようとしましたが、これにより構文エラーが発生します。助けてください。ありがとう!

私の質問は次のとおりです。1) 「ファイル ブラウザ」ボタンを押すと、ファイル ブラウザが 2 回開くのはなぜですか。2) また、python コマンド プロンプトではなく、ファイル ブランクで選択したファイルのディレクトリを指定するにはどうすればよいですか?

OKボタンを押した後、今後ファイルを開きたいと思います。

from Tkinter import *
import csv
import tkFileDialog
class Window:       
 def __init__(self, master):     
    self.filename=""
    csvfile=Label(root, text="Load File:").grid(row=1, column=0)
    bar=Entry(master).grid(row=1, column=1) 

    #Buttons  
    y=12
    self.cbutton= Button(root, text="OK", command=self.process_csv) #command refer to process_csv
    y+=1
    self.cbutton.grid(row=15, column=3, sticky = W + E)
    self.bbutton= Button(root, text="File Browser", command=self.browsecsv) #open browser; refer to browsecsv
    self.bbutton.grid(row=1, column=3)

 def browsecsv(self):
    from tkFileDialog import askopenfilename
    Tk().withdraw() 
    self.filename = askopenfilename()
    print tkFileDialog.askopenfilename() # print the file that you opened.

 def callback():
    abc = askopenfilename()
    execfile("input.xlsx")

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

1 に答える 1