Python(英文のデータベース化008: tkinterでファイル読み込み)
■FileDialogでファイル読み込み。
英文のデータベース化にあたり、三人称単数や過去形、進行形などの形を処理するために対象を指定するインプットなどをユーザ側から行いたい。tkinterを使用すればできるかと思うので、まずファイル読み込みから見ていく。
ファイル読み込みは、tkinter.filedailogを使用すればできるよう。
とりあえず、ボタンを押してファイルダイアログを表示、ファイルを指定して内容をラベルに書き出すサンプルを作る。
self.lb1 = ttk.Label(base_frame, background="white", text='No select', wraplength=300)
self.lb1.pack(side='top')
bt1 = ttk.Button(base_frame, text='Select file', command=self.file_dialog)
bt1.pack(side='top', expand='true')
self.lb2 = ttk.Label(base_frame, background="white", text='', wraplength=300)
self.lb2.pack(side='top')
def file_dialog(self):
filetype = [("", "*.txt")]
selectedfilen = ttk.filedialog.askopenfilename(filetypes=filetype)
if len(selectedfilen) == 0:
self.lb1.configure(text='File select is canceled')
else:
self.lb1.configure(text=selectedfilen)
linelist = txtfile_to_lines(selectedfilen)
self.lb2.configure(text=linelist[0])
filetypeで表示する拡張子を指定。今回はテキストファイル(txt)。askopenfilenameでファイルダイアログを表示、その中でファイルが指定されれば、そのパスが返りラベルに入れる。ファイルが指定されなければ(つまり、空の文字列が返ってくる、文字列の長さlenが0の場合)、ファイル選択が中止された「File select is canceled」とラベルに入れる。wraplengthを指定して、長くなる文は折り返すようにしている。
その後、ファイル中の英文をピリオドなどで区切って1文のリストにするメソッド(txtfile_to_lines)を使って、1番初めの文を2つ目のラベルに入れる。
実行画面が下のもの。
「Select file」ボタンを押したときのダイアログが下のもの。txtのみ表示されることが分かる。
ファイルを選択した後の画面が下のもの。
ファイル読み込み後は、フルパスで返ってきているので、特に処理することもなくopenメソッドに受け渡すことができた。