質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

1回答

569閲覧

【Tkinter exeアプリ】フォルダを作成し、その中にファイルを作成する方法

fdkfjah

総合スコア3

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

0クリップ

投稿2022/06/16 03:27

フォルダを作成すると同時に、そのフォルダの中にファイルを作成するアプリを、
Tkinterで作成したいと思っておりますがうまくいきません。

下記のようなコード(test.py)を作成しました。

python

1import pandas as pd 2import os 3import tkinter 4 5tki = tkinter.Tk() 6tki.geometry('360x200') 7 8dir_name = "作成フォルダ" 9 10def make_file(): 11 print("test") 12 13 os.mkdir(dir_name) 14 15 # 今いるディレクトリ 16 path = os.path.dirname(os.path.abspath(__file__)) 17 18 # 作成するファイル名 19 filename = "sample.xlsx" 20 21 # 保存先パスとファイル名の連結 22 filename_path = os.path.join(path, dir_name, filename) 23 24 print(filename_path) 25 26 df = pd.DataFrame([[11, 21, 31], [12, 22, 32], [31, 32, 33]], 27 index=['one', 'two', 'three'], columns=['a', 'b', 'c']) 28 29 df.to_excel(filename_path) 30 31make_file_btn = tkinter.Button(tki, text='作成', command=make_file) 32make_file_btn.place(x=150, y=80) 33 34tki.mainloop()

上記コードを下記のコマンド、
python test.py
で実行するとTkinterが起動します。

この場合、作成ボタンをクリックすると問題なく
このtest.pyと同ディレクトリに「作成フォルダ」が作成され、
そのフォルダの中にもsample.xlsxファイルが作成されているのが確認できます。

ただしこれを下記のコマンドでTkinterのexeアプリを作成し、
pyinstaller test.py --onefile

生成されたtest.exeアプリを起動して試してみるとsample.xlsxファイルがうまく作成できないのです。
「作成フォルダ」は問題なく作成できるのですが、
その中にsample.xlsxファイルが作成されません。

print(filename_path) を見ればわかるのですが、
コマンドの場合とexeアプリを起動させた場合のTkinterの今いるディレクトリであるpathの内容の表記が、
少し違うのです。

どのようにしたらexeファイルでも実行可能になるのでしょうか?
少しでもヒント頂けたら幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

プロセスのカレントパスと実行ファイルのパスが同一であることを前提として作られているところが問題だと思います。

python

1os.mkdir(dir_name) 2path = os.path.dirname(os.path.abspath(__file__))

これらの処理の前に、ファイルの保存のパスをユーザに指定させるような仕組みにするのがいいと思います。
テキストボックスでもいいし、ファイルダイアログを出してディレクトリを選択してもらうでもいいでしょう。

投稿2022/06/16 04:53

TakaiY

総合スコア12765

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問