前提・実現したいこと
python3のGUIでボタンを押すと事前に参照していたファイルの拡張子を変更するような機能をつけたいと思っています。
発生している問題・エラーメッセージ
拡張子変更用のボタンを押しても関数が適用できないようです。
(ファイル名が取得できていない?)
該当のソースコード
import tkinter
from tkinter import *
from tkinter import ttk
from tkinter import filedialog
from tkinter import messagebox
import os
import pathlib
import shutil
def click_refer_button():
fTyp = [("","*")]
iDir = os.path.abspath(os.path.dirname(file))
filepath = filedialog.askopenfilename(filetypes = fTyp, initialdir = iDir)
file_path.set(filepath)
PATH = os.path.basename(filepath)
def click_export_button():
path = file_path.get()
if path[-4:] == '.txt':
f = open(path, encoding="utf-8")
text_data = f.read()
textBox.insert(END, text_data)
else:
textBox.insert(END, "\nファイルがtextファイルではありません")
def change_to_fasta(file_name, from_suffix, to_suffix):
sf = pathlib.PurePath(file_name).suffix#ファイルの拡張子を得る
if sf == from_suffix:# 変更対象かどうか判定する
st = pathlib.PurePath(file_name).stem# ファイル名(拡張子除く)を得る
to_name = st + to_suffix # 変更後のファイル名を得る
shutil.move(file_name, to_name)# ファイル名を変更する
if name == 'main':
root = tkinter.Tk() root.title("alignment") # アプリの名前 root.geometry("720x500") # アプリの画面サイズ frame1 = ttk.Frame(root, padding=10) frame1.grid() s = StringVar() s.set('ファイル名:') label1 = ttk.Label(frame1, textvariable=s) label1.grid(row=0, column=5) file_path = StringVar() filepath_entry = ttk.Entry(frame1, textvariable=file_path, width=50) filepath_entry.grid(row=0, column=5) refer_button = ttk.Button(frame1, text=u'参照', command=click_refer_button) refer_button.grid(row=0, column=2) frame2 = ttk.Frame(root, padding=10) frame2.grid() export_button = ttk.Button(frame2, text='ファイルの中身を出力', command=click_export_button, width=20) export_button.grid(row=0, column=5) textboxname = StringVar() textboxname.set('\n\n出力内容 ') label3 = ttk.Label(frame2, textvariable=textboxname) label3.grid(row=2, column=5) textBox = Text(frame2, width=100) textBox.grid(row=3, column=5) suffix_button = ttk.Button(frame2, text = "変更", command=change_to_fasta("PATH",".txt",".csv"), width = 20) suffix_button.grid(row=4, column=5) root.mainloop()
よろしくお願いいたします。
また、それに加えて、変更したファイルを対象に別の関数処理を加えたいのですがコードの記述方法をご教示くださると幸いです。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー