pythonのpysimpleguiを用いてファイル選択ウインドウを出してファイル選択させているのですが、
このアプリケーションをEXE化すると、アドレスバーが表示されません。
該当箇所のレイアウトの記述は以下です。
[sg.InputText('CSVファイル一覧', enable_events=True,), sg.FilesBrowse('選択', key='-FILES-', file_types=(('csvファイル', '*.csv'),), initial_folder= iDir)],
解決手段ご存じの方教えていただきたいです。
よろしくお願いします。
#追記
exe化の際の詳細情報
Python 3.7.3
Anaconda環境を使用
exe化する時の使用コマンド
pyinstaller --onefile --noconsole --exclude-module numpy --exclude-module pandas --exclude-module matplotlib example.py
コード(抜粋)
import csv import os from time import sleep import sys import pathlib import PySimpleGUI as sg import openpyxl import win32com.client sg.theme('Dark Blue 3') frame1 = sg.Frame('パラメータ',[ [sg.Text('角度', size=(10, 1)), sg.Combo(baselist,key='-ANGLE-',size=(20,20)),sg.Submit(button_text='変換',key='-cnv256-'),], [sg.Text(' - 変換後:', size=(30, 1), key='-ANGLE256-')], [sg.Text('数値', size=(20, 1)), sg.Slider(range=(0,20),key='-NDL-',orientation='h',resolution=1)], ],relief=sg.RELIEF_SUNKEN,key='-FRAME1-',visible=False) main_layout = [ [sg.Text('初期設定')], [sg.Radio('データを挿入する',"0YESNO",key='-0YES-',enable_events=True),frame1], [sg.Radio('データを挿入しない',"0YESNO",key='-0NO-',enable_events=True)], [sg.Text('データ貼り付け開始セル', size=(20, 1)), sg.Text('列', size=(2, 1)),sg.Combo(collist,size=(5, 1),key='COL'),sg.Text('行', size=(2, 1)),sg.Combo(rowlist,size=(5, 1),key='ROW')], [sg.Text('CSVファイル選択', size=(15, 1))], [sg.InputText('CSVファイル一覧', enable_events=True,), sg.FilesBrowse('選択', key='-FILES-', file_types=(('csvファイル', '*.csv'),), initial_folder= iDir)], [sg.Text('テンプレートファイル選択', size=(25, 1))], [sg.InputText('EXCELファイル', enable_events=True,), sg.FileBrowse('選択', key='-FILE-', file_types=(('EXCELファイル', '*.xlsx'),('EXCELファイル', '*.xlsm')), initial_folder= basepath)], [sg.Submit(button_text='GO!'), sg.Submit(button_text='EXIT')], ] # ウィンドウの生成 window = sg.Window('初期設定', main_layout) (以下略)
exe化の際の詳細情報を追記お願いします。
- EXE化に利用したツールや、環境、コンパイルの際の詳細なオプションや手順
症状から、「manifest 情報」(コモンダイアログのdll情報等を指定)が
適切に設定されてない等が考えられますが、
win10 py3.8.3 pyinstaller で何もオプションを指定せずにexe化してみて
してない場合と同じダイアログを確認。問題の症状は確認できませんでした。
----
出来ればコードも、抜粋ではなく
コピーしてそのまま動作確認が出来るコードの掲載をお願いします。
と言っても、現状の手元のコードを全文掲載ではなく、
質問用に問題の再現に必要な最小限のコードを作ってください。
十数行程度に収まるはずです。
- 動作確認の為に、import ~ 実行のコードを書かなくてはいけないのも手間ですが
そこで何か、別の事をしていたりすると、齟齬が生まれる可能性があります。
- そのまま動作可能なコードを掲載することで、
事前に他に影響のありそうな処理を行っていないかの確認ができるので、
後々で、掲載してない部分の前後のコードの問題だったみたいな事態を避けられます。
ただ、今回の場合であれば、普通に実行の際は正常だったので、
コンパイル時若しくは実行時の環境設定の方に問題がありそう、
コードの該当行自体は大して重要でない可能性は高いです。
繰り返しになりますが、
現状の手元のコードを全文掲載「「「ではなく」」」、
質問用に問題の再現に必要な最小限のコードを作ってください。
「コピーしてそのまま動作確認が出来るコード」の掲載をお願いします。
未定義の変数がたくさんある状態なので、
本来の質問の現象を確かめる前に余分なデバッグが発生してしまいます…
依存ライブラリの影響があるかどうかはわかりませんが、
Anaconda 3.7.3 で上記の方法でEXE化を試みたところ、同じ現象は確認できませんでした。
pysimplegui, pyinstaller は conda install -c conda-forge でインストールしたものを利用。
----
現象としては、昔同じ様な状況(exe化すると異なるダイアログが表示)に遭遇したことはあります。
example.exe.manifest ファイルがあるか
もしくは、exeファイル内にリソースとして manifest 情報がある等を調べられますか?
後、確認点ですが、EXEファイルを実行したのは、作った環境と同じ環境ですか?
それとも別の環境で実行して起こった現象でしょうか?(実行環境の違いかどうかの確認)
(画像をよく見比べてみて)
使われてるダイアログ自体は同じなので、manifest ではなかったかもしれないです。
実行してるユーザの権限が違って、
異なる設定が適応されてるというようなことはありませんか?
回答1件
あなたの回答
tips
プレビュー