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

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

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

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

Q&A

解決済

1回答

2421閲覧

Python pysimpleguiのファイルブラウズでアドレスバーが表示されない

sugar_p

総合スコア2

Python

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

0グッド

0クリップ

投稿2020/06/05 00:47

編集2020/06/05 07:12

pythonのpysimpleguiを用いてファイル選択ウインドウを出してファイル選択させているのですが、
このアプリケーションをEXE化すると、アドレスバーが表示されません。

~.pyを実行した時のファイル選択画面
イメージ説明

上のpyファイルを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) (以下略)

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

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

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

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

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

teamikl

2020/06/05 06:09

exe化の際の詳細情報を追記お願いします。 - EXE化に利用したツールや、環境、コンパイルの際の詳細なオプションや手順 症状から、「manifest 情報」(コモンダイアログのdll情報等を指定)が 適切に設定されてない等が考えられますが、 win10 py3.8.3 pyinstaller で何もオプションを指定せずにexe化してみて してない場合と同じダイアログを確認。問題の症状は確認できませんでした。 ---- 出来ればコードも、抜粋ではなく コピーしてそのまま動作確認が出来るコードの掲載をお願いします。 と言っても、現状の手元のコードを全文掲載ではなく、 質問用に問題の再現に必要な最小限のコードを作ってください。 十数行程度に収まるはずです。 - 動作確認の為に、import ~ 実行のコードを書かなくてはいけないのも手間ですが  そこで何か、別の事をしていたりすると、齟齬が生まれる可能性があります。 - そのまま動作可能なコードを掲載することで、  事前に他に影響のありそうな処理を行っていないかの確認ができるので、  後々で、掲載してない部分の前後のコードの問題だったみたいな事態を避けられます。 ただ、今回の場合であれば、普通に実行の際は正常だったので、 コンパイル時若しくは実行時の環境設定の方に問題がありそう、 コードの該当行自体は大して重要でない可能性は高いです。
teamikl

2020/06/05 07:58

繰り返しになりますが、 現状の手元のコードを全文掲載「「「ではなく」」」、 質問用に問題の再現に必要な最小限のコードを作ってください。 「コピーしてそのまま動作確認が出来るコード」の掲載をお願いします。 未定義の変数がたくさんある状態なので、 本来の質問の現象を確かめる前に余分なデバッグが発生してしまいます… 依存ライブラリの影響があるかどうかはわかりませんが、 Anaconda 3.7.3 で上記の方法でEXE化を試みたところ、同じ現象は確認できませんでした。 pysimplegui, pyinstaller は conda install -c conda-forge でインストールしたものを利用。 ---- 現象としては、昔同じ様な状況(exe化すると異なるダイアログが表示)に遭遇したことはあります。 example.exe.manifest ファイルがあるか もしくは、exeファイル内にリソースとして manifest 情報がある等を調べられますか? 後、確認点ですが、EXEファイルを実行したのは、作った環境と同じ環境ですか? それとも別の環境で実行して起こった現象でしょうか?(実行環境の違いかどうかの確認)
teamikl

2020/06/05 08:04

(画像をよく見比べてみて) 使われてるダイアログ自体は同じなので、manifest ではなかったかもしれないです。 実行してるユーザの権限が違って、 異なる設定が適応されてるというようなことはありませんか?
guest

回答1

0

ベストアンサー

問題の現象を再現できないのですが、
以下のコードで試してみてどうなりますか?

環境: Anaconda, Python 3.7.6, conda-forge より pysimplegui, pyinstaller をインストール

python

1# FILE: sample.py 2 3import PySimpleGUI as sg 4 5main_layout = [ 6 [sg.InputText('CSVファイル一覧', enable_events=True,), 7 sg.FilesBrowse('選択', key='-FILES-', file_types=(('csvファイル', '*.csv'),), initial_folder=".")]] 8 9window = sg.Window("", main_layout) 10while 1: 11 event, values = window.read() 12 if not event: 13 break
pyinstaller sample.py

イメージ説明

投稿2020/06/05 08:12

teamikl

総合スコア8760

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

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

sugar_p

2020/06/08 07:29

teamiklさん ご回答ありがとうございます。 御返事遅れてすみません。 載せていただいたサンプルで実施したところ、アドレスバーが表示されました。
sugar_p

2020/06/08 07:33

>後、確認点ですが、EXEファイルを実行したのは、作った環境と同じ環境ですか? これはどういう意味でしょうか?
teamikl

2020/06/08 08:07

>載せていただいたサンプルで実施したところ、アドレスバーが表示されました。 ということは、環境だけでなく、使っているライブラリや 省略されている他の部分のコードの影響も考えられますね。 コードは「省略せずに」「他人が実行可能な」「最小限の」ものをとコメントしたのは 私の視点からは、win32client 等のライブラリをどのように扱っているのか解らないので 実際に試せないし、問題の再現も出来ないので、一般的な問題解決の方針しか回答できません。 問題が再現出来れば、具体的な点を指摘できるか 再現出来なければ、環境の違いという風に原因の絞り込みが出来ます。 但し、コードは長すぎる場合は、現状の手元のコードをそのまま全部掲載も、 丸投げみたいでよくないみたいなので、ある程度は絞り込んでみてください。 アドレスバーが表示されたコードから、徐々に元の表示されないコードを付け足していき、 恐らくその過程で問題点に気が付けるはずです。 >>後、確認点ですが、EXEファイルを実行したのは、作った環境と同じ環境ですか? >これはどういう意味でしょうか? 他の環境で実行してないかどうかという点の確認です。 コンパイル方法まではわかりましたが、その後にどのように実行したのでしょう? - そのまま同じ端末(コマンドライン環境)から exe ファイル名を打ち込む なら同じ環境ですが - 例えば、ファイルをダブルクリックで起動した場合なら、双方が同じ環境であることの確認も必要です  (稀に、管理者権限で起動していた等の違いが影響することがあります)
teamikl

2020/06/08 08:54 編集

一点見落としてました。コンパイル時のオプションの違いという可能性も考えられますね。 上記のコードを、質問にある「exe化する時の使用コマンド」で試すとどうなりますか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問