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

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

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

PyInstallerは、Pythonのスクリプトを一括でWindowsなどで動く実行可能ファイルに変換できるツールです。このツールを用いることで自作のPythonプログラムを別で使用する場合でもPythonをインストールする必要がありません。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Tkinter

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

解決済

python tkinter構成のexe化したファイルが実行できない

Kazu
Kazu

総合スコア5

PyInstaller

PyInstallerは、Pythonのスクリプトを一括でWindowsなどで動く実行可能ファイルに変換できるツールです。このツールを用いることで自作のPythonプログラムを別で使用する場合でもPythonをインストールする必要がありません。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Tkinter

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

1回答

0評価

0クリップ

554閲覧

投稿2022/01/26 07:05

python pyファイルをexeファイルで実行可能にして配布したい

exeを実行した際に添付画像のようなエラーが出てしまい動作しない状況となっております。
exeファイル作成は pyinstaller ファイル名 --onefile --noconsoleで作成しております。

発生している問題・エラーメッセージ

イメージ説明

該当のソースコード抜粋

python

import shutil import re, openpyxl import tkinter as tkm from tkinter import ttk from tkinter import * from tkinter.ttk import * from tkinter import messagebox from tkinter import filedialog from tkcalendar import DateEntry class Filerename(tkm.Frame): def __init__(self,master): super().__init__(master) self.pack() self.master.title("ファイルリネームVer1.0") self.master.geometry("550x280+700+350") self.widget() #--------入力制限失敗時の表示-START--------- def InvalidText01(self): messagebox.showerror('エラー','半角数字または6文字以内で入力してください。') #--------入力制限失敗時の表示-END--------- #--------入力制限設定-START---------- def onValidate01(self, S, P): if re.match(re.compile('[0-9]+'), S) and len(P) <=6: return True else: return False #--------入力制限設定-END--------- #---------ボタン動作-START---------- #ファイル参照ボタン def select_files(self): idir = 'C:/USER/(ユーザー名)/Desktop' fileType = [("名前変更するPDF","*.pdf")] ogfile_path = filedialog.askopenfilename(filetypes=fileType, initialdir=idir, title="対象ファイル指定") self.oldfile_path = ogfile_path self.entry08.insert(tkm.END, ogfile_path) #確認ボタン動作(全項目の入力漏れチェック) def check(self): if self.entry01.get() != "" \ and self.combo02.get() != "" \ and self.combo03.get() != "" \ and self.entry06.get() != "" \ and self.entry07.get() != "" \ and self.entry08.get() != "": #支店選択より保存先設定 if self.combo02.get() == "本社": self.save_path = "c:/" elif self.combo02.get() == "東京支店": self.save_path = "c:/ elif self.combo02.get() == "名古屋支店": self.save_path = "c:/" elif self.combo02.get() == "大阪支店": self.save_path = "c:/" elif self.combo02.get() == "九州支店": self.save_path = "c:/" else: messagebox.showerror("選択エラー","支店を選択してください。") self.entry09.configure(state = "normal") self.entry09.insert(tkm.END, self.save_path) self.entry09.configure(state = "readonly") self.btn12['state']= 'disable' self.btn13['state']= 'enable' messagebox.showinfo("内容確認完了","ファイル名を変更してもよろしければ続けて【実行】ボタンをクリックしてください。") else: messagebox.showerror("エラー","全ての項目を入力してください。") #実行ボタン動作(ファイル名変更) def renameexe(self): excel_master = "c:/" excel_search = "c:/" #Excel開き転記作業 wb = openpyxl.load_workbook(excel_master) ws = wb['検索'] rowval = int(ws.cell(row=1, column=2).value) file_id = str(ws.cell(row=rowval, column=1).value) + ".pdf" self.entry10.configure(state="normal") self.entry10.insert(tkm.END, file_id) self.entry10.configure(state="readonly") ws.cell(row=rowval, column=3).value = self.entry01.get() #登録者社員番号転記 ws.cell(row=rowval, column=4).value = self.combo02.get() #支店転記 ws.cell(row=rowval, column=5).value = self.combo03.get() #種別転記 ws.cell(row=rowval, column=6).value = self.entry05.get() #プロジェクト番号転記 ws.cell(row=rowval, column=7).value = self.entry06.get() #顧客名転記 ws.cell(row=rowval, column=8).value = self.entry07.get() #金額転記 ws.cell(row=rowval, column=2).value = self.date04.get() #日付転記 rowval = rowval + 1 ws.cell(row=1, column=2).value = rowval wb.save(excel_master) ws.delete_rows(1) wb.save(excel_search) self.save_path = self.save_path + file_id shutil.move(self.oldfile_path,self.save_path) messagebox.showinfo("変更完了","ファイル保存先と変更ファイル名を確認してください。") self.btn11['state']= 'disable' self.btn12['state']= 'disable' self.btn13['state']= 'disable' self.btn14['state']= 'enable' #クリアボタン動作(入力内容クリア) def initclear(self): rec = messagebox.askyesno("確認","入力内容を全てクリアしてもよろしいですか?") if rec == True: self.entry01.delete(0,tkm.END) self.combo02.delete(0,tkm.END) self.combo03.delete(0,tkm.END) self.entry05.delete(0,tkm.END) self.entry06.delete(0,tkm.END) self.entry07.delete(0,tkm.END) self.entry08.delete(0,tkm.END) self.entry09.configure(state = "normal") self.entry09.delete(0,tkm.END) self.entry09.configure(state = "readonly") self.entry10.configure(state = "normal") self.entry10.delete(0,tkm.END) self.entry10.configure(state = "readonly") self.btn11['state']= 'enable' self.btn12['state']= 'enable' self.btn13['state']= 'disable' self.btn14['state']= 'enable' #---------ボタン動作-END---------- #-----------パーツ設定-START---------- def widget(self): vcmd01 = self.register(self.onValidate01) #登録社員番号入力データ取得 vcmd02 = self.register(self.onValidate02) #支店入力データ取得 vcmd03 = self.register(self.onValidate03) #種別入力データ取得 vcmd05 = self.register(self.onValidate05) #プロジェクト番号入力データ取得 vcmd07 = self.register(self.onValidate07) #金額データ取得 self.lbl01 = ttk.Label(self.master, text="登録者社員番号", width=17, anchor="e", justify=RIGHT) self.lbl02 = ttk.Label(self.master, text="支店", width=17, anchor="e", justify=RIGHT) self.lbl03 = ttk.Label(self.master, text="種別", width=13, anchor="e", justify=RIGHT) self.lbl04 = ttk.Label(self.master, text="日付", width=17, anchor="e", justify=RIGHT) self.lbl05 = ttk.Label(self.master, text="プロジェクト番号", width=17, anchor= "e", justify=RIGHT) self.lbl06 = ttk.Label(self.master, text="顧客名", width=17, anchor="e", justify=RIGHT) self.lbl07 = ttk.Label(self.master, text="金額", width=17, anchor="e", justify=RIGHT) self.lbl08 = ttk.Label(self.master, text="対象ファイル", width=17, anchor="e", justify=RIGHT) self.lbl09 = ttk.Label(self.master, text="ファイル保存先", width=17, anchor="e", justify=RIGHT) self.lbl10 = ttk.Label(self.master, text="変更後のファイル名", width=17, anchor="e", justify=RIGHT) self.lbl01.place(x=10, y=10) self.lbl02.place(x=10, y=35) self.lbl03.place(x=190, y=35) self.lbl04.place(x=10, y=60) self.lbl05.place(x=10, y=85) self.lbl06.place(x=10, y=110) self.lbl07.place(x=10, y=135) self.lbl08.place(x=10, y=160) self.lbl09.place(x=10, y=185) self.lbl10.place(x=10, y=210) self.entry01 = ttk.Entry(self.master, justify=tkm.LEFT, width=13, validate="key", validatecommand=(vcmd01, '%S', '%P'), invalidcommand=self.InvalidText01) self.combo02 = ttk.Combobox(self.master, justify=tkm.CENTER, width=13, values=[ "本社", "東京支店", "名古屋支店", "大阪支店", "九州支店"], validate="key", validatecommand=(vcmd02, '%S'), invalidcommand=self.InvalidText02) self.combo03 = ttk.Combobox(self.master, justify=tkm.CENTER, width=13, values=[ "請求書", "注文書", "契約書", "領収書"], validate="key", validatecommand=(vcmd03, '%S'), invalidcommand=self.InvalidText03) self.date04 = DateEntry(date_pattern='yyyy/mm/dd', width=13, locale='ja_jp', firstweekday='sunday', showweeknumbers=False, justify=CENTER) self.entry05 = ttk.Entry(self.master, justify = tkm.LEFT, width = 13, validate="key", validatecommand=(vcmd05, '%S', '%P'), invalidcommand=self.InvalidText05) self.entry06 = ttk.Entry(self.master, justify=tkm.LEFT, width=60) self.entry07 = ttk.Entry(self.master, justify=tkm.RIGHT, width=13, validate="key", validatecommand=(vcmd07, '%S'), invalidcommand=self.InvalidText07) self.entry08 = ttk.Entry(self.master, justify=tkm.LEFT, width=60) self.entry09 = ttk.Entry(self.master, justify=tkm.LEFT, width=60, state="readonly") self.entry10 = ttk.Entry(self.master, justify=tkm.LEFT, width=60, state="readonly") self.btn11 = ttk.Button(self.master, text="参照", width=6, command=self.select_files) self.btn12 = ttk.Button(self.master, text="確認", width=10, state="enable", command=self.check) self.btn13 = ttk.Button(self.master, text="実行", width=10, state="disable", command=self.renameexe) self.btn14 = ttk.Button(self.master, text="クリア", width=10, command=self.initclear) #-----------パーツ設定-END---------- #起動 def main(): root = tkm.Tk() app = Filerename(master = root) app.mainloop() if __name__ == "__main__": main()

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

PyInstaller

PyInstallerは、Pythonのスクリプトを一括でWindowsなどで動く実行可能ファイルに変換できるツールです。このツールを用いることで自作のPythonプログラムを別で使用する場合でもPythonをインストールする必要がありません。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Tkinter

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