2024/05/29(水) [n年前の日記]
#1 [python] Pythonスクリプトをexe化したファイルのアイコンを変更したい
_先日、
Python + tkinterを使った色管理ツールを作成したけれど、せっかくだからexe化したファイルのアイコンを変更してみたい。Nuitka と py2exe を使った場合、どういう指定をすればいいのだろう。
環境は Windows10 x64 22H2 + Python 3.10.10 64bit + tkinter。Nuitka 2.2.3。py2exe 0.13.0.1。
環境は Windows10 x64 22H2 + Python 3.10.10 64bit + tkinter。Nuitka 2.2.3。py2exe 0.13.0.1。
◎ Nuitkaの場合 :
Nuitka の場合は、--windows-icon-from-ico=icon.ico といった感じのオプションをつければいいらしい。
_Nuitkaでpythonをexe化(メモ) #Python - Qiita
_Nuitkaを使ってスクリプトをバイナリ化してみよう - PythonOsaka
_【python】nuitkaでpythonコードからexeファイルを作成する方法|星杜なぎさ
たしかにアイコンが変わってくれた。
ただ、これはエクスプローラでファイル一覧を表示した際に使われるアイコンを指定しているそうで…。出来上がったexeを実行してみると、ウインドウのタイトルバーに表示されるアイコンと、Windows10のタスクバーに表示されるアイコンについては、tkinter のアイコンのままだった。
ウインドウのタイトルバーに表示されるアイコンを変更するには、Pythonスクリプト内で iconbitmap("icon.ico") を呼べばいいらしい。その場合は .exeと一緒に icon.ico も配布することになる。
_Tkinter でウィンドウアイコンを設定する方法 | Delft スタック
_TkinterタイトルバーアイコンとEXEアイコンの設定方法【Python】 - プログラムでおかえしできるかな
_Embed icon in python script - Stack Overflow
試してみたところ、たしかに反映された。
しかし、タイトルバー上のアイコンは変わったものの、Windows10のタスクバー上のアイコンは変化が無かった。PythonからPythonスクリプトが呼び出されると、タスクバー上のアイコンは python.exe か pythonw.exe のアイコンになるということだろうか。いや、だとしたら、tkinter のアイコンになっているのも妙だな…。
その後、何度かexeを作り直していたら、いつのまにか Windows10のタスクバー上も指定したアイコンになってくれた。何故。もしかして、アイコンキャッシュが絡んでいて、キャッシュが古いままになっていて更新されなかっただけだろうか…。だとしても、一体どちらの指定が関係してくるのか…。
何にせよ、Nuitka でexeに変換する分には、アイコンを変更することも可能、ということは分かった。
python -m nuitka --standalone --enable-plugin=tk-inter --windows-disable-console --windows-icon-from-ico=icon.ico pyrgbfloatviewer.pyw
_Nuitkaでpythonをexe化(メモ) #Python - Qiita
_Nuitkaを使ってスクリプトをバイナリ化してみよう - PythonOsaka
_【python】nuitkaでpythonコードからexeファイルを作成する方法|星杜なぎさ
たしかにアイコンが変わってくれた。
ただ、これはエクスプローラでファイル一覧を表示した際に使われるアイコンを指定しているそうで…。出来上がったexeを実行してみると、ウインドウのタイトルバーに表示されるアイコンと、Windows10のタスクバーに表示されるアイコンについては、tkinter のアイコンのままだった。
ウインドウのタイトルバーに表示されるアイコンを変更するには、Pythonスクリプト内で iconbitmap("icon.ico") を呼べばいいらしい。その場合は .exeと一緒に icon.ico も配布することになる。
_Tkinter でウィンドウアイコンを設定する方法 | Delft スタック
_TkinterタイトルバーアイコンとEXEアイコンの設定方法【Python】 - プログラムでおかえしできるかな
_Embed icon in python script - Stack Overflow
試してみたところ、たしかに反映された。
root = tk.Tk() root.iconbitmap(default="./icon.ico")
しかし、タイトルバー上のアイコンは変わったものの、Windows10のタスクバー上のアイコンは変化が無かった。PythonからPythonスクリプトが呼び出されると、タスクバー上のアイコンは python.exe か pythonw.exe のアイコンになるということだろうか。いや、だとしたら、tkinter のアイコンになっているのも妙だな…。
その後、何度かexeを作り直していたら、いつのまにか Windows10のタスクバー上も指定したアイコンになってくれた。何故。もしかして、アイコンキャッシュが絡んでいて、キャッシュが古いままになっていて更新されなかっただけだろうか…。だとしても、一体どちらの指定が関係してくるのか…。
何にせよ、Nuitka でexeに変換する分には、アイコンを変更することも可能、ということは分かった。
◎ py2exeの場合 :
py2exeでexe化する際にアイコンを指定するには、setup.py 内で icon_resources を設定すればいいらしいのだけど…。手元の環境で試したところ、そのあたりの指定をするとexe化する際にエラーが出て、exe化が失敗するようになってしまった。おそらく自分が記述の仕方を間違えてそうな気がする。
py2exe は、昔の仕様が解説されてることが多いようで、最近の仕様ではどう指定すればいいのか、そこが分からない…。
諦めた。そもそもアイコンをカスタマイズしたところで、ツールの処理内容が変わるわけでもないし。元々のアイコンが表示されていたとしても、実用上は何も困らないのだよな…。
py2exe は、昔の仕様が解説されてることが多いようで、最近の仕様ではどう指定すればいいのか、そこが分からない…。
諦めた。そもそもアイコンをカスタマイズしたところで、ツールの処理内容が変わるわけでもないし。元々のアイコンが表示されていたとしても、実用上は何も困らないのだよな…。
◎ 余談。色管理ツールの機能を一つ増やした :
先日作成した色管理ツールに機能を追加してみた。既に RGB Float値が書かれてる箇所を、色選択ダイアログで選んだ色で置換する機能をつけた。Edit color ボタンを押せば利用できる。
ただ、正規表現で置換すべき箇所の判定をしているので、正規表現の記述が甘くて誤検出して変なところを置換してしまう可能性が高い…。正しい正規表現になってるか、ちょっと自信がない。
もっとも、編集ウインドウ内で数値を直接書き換えても色は変わっていくので…。今回追加した機能は、所詮はオマケみたいなもの、かもしれない…。
ついでに、バグを一つ修正。編集ウインドウ内(textウィジェット内)の全文字列を取得する際、今までは全文字列の一番最後に余分な改行をつけながら取得していたらしい。そのせいで、Coloringボタンを押すたびに、最後に改行が無駄に追加されてしまう状態になっていた。.get() で文字列を取得する際、.strip() で改行を除去するようにしてみたら、余計な改行がつかない状態になった。
_python - Get string from tkinter text object without line break - Stack Overflow
ただ、正規表現で置換すべき箇所の判定をしているので、正規表現の記述が甘くて誤検出して変なところを置換してしまう可能性が高い…。正しい正規表現になってるか、ちょっと自信がない。
もっとも、編集ウインドウ内で数値を直接書き換えても色は変わっていくので…。今回追加した機能は、所詮はオマケみたいなもの、かもしれない…。
ついでに、バグを一つ修正。編集ウインドウ内(textウィジェット内)の全文字列を取得する際、今までは全文字列の一番最後に余分な改行をつけながら取得していたらしい。そのせいで、Coloringボタンを押すたびに、最後に改行が無駄に追加されてしまう状態になっていた。.get() で文字列を取得する際、.strip() で改行を除去するようにしてみたら、余計な改行がつかない状態になった。
_python - Get string from tkinter text object without line break - Stack Overflow
[ ツッコむ ]
#2 [digital] ここ最近AIに頼りつつプログラムを書いてる気がする
思考メモというか近況メモ。
ここ最近、ちょっとしたツールをPythonを使って書いてたけれど。そういえばプログラムを書く際に、AIに尋ねてみることが ―― Microsoft Copilot に質問する回数が次第に増えてきた気がする。
例えば、tkinter のウイジェットの使い方に関して、まずはGoogle検索してみるのだけど、えてして期待した検索結果が出てこない…。そんな時は Microsoft Copilot に尋ねてみて、そこで出てきたキーワードを使って、改めてGoogle検索、といった流れが多くなってきた。
AIが出してきた結果をそのまま使うと、動かなかったり、妙な結果になることがチラホラあるので、別の検索サービスで調べ直さないといけないのがちょっとアレだけど、こちらが知らなかったキーワードを提示してくれるだけでも結構ありがたいなと感じている。いやまあ、AIにプログラムを全部作らせちゃうような使い方をしている人達から見たら、なんて馬鹿馬鹿しい使い方をしているのかと呆れられそうだけど…。
ただ、こういう使い方ができるのも今だけなのかもしれない。どうせそのうちAIで生成されまくった、間違いだらけの内容のページがWeb上で氾濫して、それをAIが学習してしまって…。AIに尋ねてもダメ。Google検索してもダメ。どこまで行っても頓珍漢な内容しか出てこない。そんな時代がすぐに来そうな気もする…。いや、自分が気づいてないだけで、もう来ちゃってる可能性もあるのだろうか…。
まあ、そんな不安がありつつも、ここ最近はGoogle検索とMicrosoft Copilotを行き来しつつプログラムを書いてたりします。とメモ。
ここ最近、ちょっとしたツールをPythonを使って書いてたけれど。そういえばプログラムを書く際に、AIに尋ねてみることが ―― Microsoft Copilot に質問する回数が次第に増えてきた気がする。
例えば、tkinter のウイジェットの使い方に関して、まずはGoogle検索してみるのだけど、えてして期待した検索結果が出てこない…。そんな時は Microsoft Copilot に尋ねてみて、そこで出てきたキーワードを使って、改めてGoogle検索、といった流れが多くなってきた。
AIが出してきた結果をそのまま使うと、動かなかったり、妙な結果になることがチラホラあるので、別の検索サービスで調べ直さないといけないのがちょっとアレだけど、こちらが知らなかったキーワードを提示してくれるだけでも結構ありがたいなと感じている。いやまあ、AIにプログラムを全部作らせちゃうような使い方をしている人達から見たら、なんて馬鹿馬鹿しい使い方をしているのかと呆れられそうだけど…。
ただ、こういう使い方ができるのも今だけなのかもしれない。どうせそのうちAIで生成されまくった、間違いだらけの内容のページがWeb上で氾濫して、それをAIが学習してしまって…。AIに尋ねてもダメ。Google検索してもダメ。どこまで行っても頓珍漢な内容しか出てこない。そんな時代がすぐに来そうな気もする…。いや、自分が気づいてないだけで、もう来ちゃってる可能性もあるのだろうか…。
まあ、そんな不安がありつつも、ここ最近はGoogle検索とMicrosoft Copilotを行き来しつつプログラムを書いてたりします。とメモ。
[ ツッコむ ]
#3 [neta] 異世界転生ナロウケイ
妄想メモ。
ネットサーフィン(死語)しながら「異世界転生なろう系」という文字列をぼんやり眺めてるうちに、ふとなんとなく、コレをカタカナで書いたらなんだかアレっぽいなとしょーもないことを考え始めてしまった。
「異世界転生ナロウケイ」
ロボットアニメのタイトルみたいだ…。いや、ロボットアニメのタイトルなら「ン」が入ってないとダメだろう。
「異世界転生ナロウケイン」
うむ。完璧だ! 何が完璧なのかよく分からんけど。
どういう作品内容なのだろう。…全くイメージが湧きません。誰か書いてみてくれないものか。自分は権利を一切主張しませんので。こんなしょーもないネタだけで主張できるわけないじゃんよ。というか既に誰かがこういうノリのタイトルで書いてたりするんじゃないかなあ。
ロボットアニメのタイトルっぽいと思ったけれど、もしかしてロボットの名前じゃなくて、人の名前なのかもしれない…。
「こんにちは。冒険者ギルドに登録したいのですが受け付けはこちらですか?」
「はい。そうです。お名前は?」
「ナロウ・ケインです」
なんだか一気にありきたり感が増してきた。ダメだこりゃ。
ネットサーフィン(死語)しながら「異世界転生なろう系」という文字列をぼんやり眺めてるうちに、ふとなんとなく、コレをカタカナで書いたらなんだかアレっぽいなとしょーもないことを考え始めてしまった。
「異世界転生ナロウケイ」
ロボットアニメのタイトルみたいだ…。いや、ロボットアニメのタイトルなら「ン」が入ってないとダメだろう。
「異世界転生ナロウケイン」
うむ。完璧だ! 何が完璧なのかよく分からんけど。
どういう作品内容なのだろう。…全くイメージが湧きません。誰か書いてみてくれないものか。自分は権利を一切主張しませんので。こんなしょーもないネタだけで主張できるわけないじゃんよ。というか既に誰かがこういうノリのタイトルで書いてたりするんじゃないかなあ。
ロボットアニメのタイトルっぽいと思ったけれど、もしかしてロボットの名前じゃなくて、人の名前なのかもしれない…。
「こんにちは。冒険者ギルドに登録したいのですが受け付けはこちらですか?」
「はい。そうです。お名前は?」
「ナロウ・ケインです」
なんだか一気にありきたり感が増してきた。ダメだこりゃ。
◎ 昔のアニメのタイトルは御茶目だった気がする :
考えてみたら、昭和アニメのタイトルってこういうノリがチラホラあったような気もしてきた。
今はそういうノリが少なくなった気もする。皆、結構真面目なタイトルをつけるようになってしまった…。余裕が無くなってきたのかなあ…。
「コードギアス 反逆のルルーシュ」も、昭和だったら「絶対命令キキナサイン」とかになってたりして。印象が結構違っただろうな…。でも、ちょっと肩の力を抜いて作れたりしそう。その代わり予算もスケジュールもガッツリ減らされたりして…。「キキナサイン」ではヒットしそうな気配が全然感じられないし…。
- ダイターン3 ... たぶん何かが大胆なんだろうなあ。
- トライダーG7 ... 何かにトライするのかな?
- ゴワッパー5 ゴーダム ... ワッパ(=子供)が5人ぐらい居るのだろうか?
- ウラシマン ... 浦島太郎が関係してたりする?
- テッカマン ... 鉄仮面を被ったヒーローなのかな?
- スターザンス ... スターと言うのだから宇宙を舞台に活躍するターザンかしら?
今はそういうノリが少なくなった気もする。皆、結構真面目なタイトルをつけるようになってしまった…。余裕が無くなってきたのかなあ…。
「コードギアス 反逆のルルーシュ」も、昭和だったら「絶対命令キキナサイン」とかになってたりして。印象が結構違っただろうな…。でも、ちょっと肩の力を抜いて作れたりしそう。その代わり予算もスケジュールもガッツリ減らされたりして…。「キキナサイン」ではヒットしそうな気配が全然感じられないし…。
◎ なんとかかんとかホニャラララ :
日本の昔のアニメのタイトルって、なんとかかんとかホニャラララ、が多かった気もする…。こういうタイトルって今でも稀にあるけれど、海外配信を視野に入れるとちょっと不利だったりしないのだろうか。海外の映像作品のタイトルって、こういう「型」は無いよな…。海外からは奇異に見えたりしないのだろうか。
例えば、「STAR WARS」のタイトルが、「超光速宇宙戦闘機Xウイング」だったら…。いやー、たしかに主人公機ではあるけれど…。日本の昭和アニメだったらそういうタイトルをつけられそうではある…。
「STAR TREK」が、「宇宙戦艦エンタープライズ」だったら…。いやまあ、「宇宙大作戦」よりは日本向けかなあ…。
日本の場合、本編に登場する主人公機やアイテムの名前をそのままタイトルにしちゃう場合が結構多い気もしてきた。ロボットアニメは大体が主人公機の名前だったし。あるいは「ドラゴンボール」とか。ソレ、只のアイテム名やん。そんなんでええんか?
と思ったけれど、海外だって「スーパーマン」「スパイダーマン」「アイアンマン」とかあるじゃんよと気づいた。主人公の名前をそのままタイトルにするのは海外でもアリ、ということだろうか。でも、あのへんはアメコミ特有のノリのような気も…。
「ダーティーハリー」とかもあったか…。主人公の名前が「ハリー」ではあるけど、アレはちょっと捻ってた気がする。たしかあだ名なんだっけか。違ったかな。
「ナイトライダー」とか…。アレは主人公機の名前なの? ちょっと違う気もする…。ナイトライダーって一体何を指していたんだろう?
海外風のタイトルにしようと意識して考えていくと、日本のノリとは違ってきそう…。日本でヒットしたあの作品タイトルを海外風にしたらどうなるか? と予想する遊びもちょっと楽しいかもしれない。
「機動戦士ガンダム」が「白い木馬と赤い髪の少年」になったり、とか? …元々ガンダムって「十五少年漂流記」が元ネタなんだっけか。「十五少年漂流記」の原題は…ググったら「2年間の休暇」と出てきた。うわー、そういうノリか…。そのノリでガンダムの海外風タイトルを想像すると…どうなるんだ…? 海外風タイトルを想像するのは、なかなか難易度が高そうです。そういうノリかあ…。
妄想メモです。オチはないです。
例えば、「STAR WARS」のタイトルが、「超光速宇宙戦闘機Xウイング」だったら…。いやー、たしかに主人公機ではあるけれど…。日本の昭和アニメだったらそういうタイトルをつけられそうではある…。
「STAR TREK」が、「宇宙戦艦エンタープライズ」だったら…。いやまあ、「宇宙大作戦」よりは日本向けかなあ…。
日本の場合、本編に登場する主人公機やアイテムの名前をそのままタイトルにしちゃう場合が結構多い気もしてきた。ロボットアニメは大体が主人公機の名前だったし。あるいは「ドラゴンボール」とか。ソレ、只のアイテム名やん。そんなんでええんか?
と思ったけれど、海外だって「スーパーマン」「スパイダーマン」「アイアンマン」とかあるじゃんよと気づいた。主人公の名前をそのままタイトルにするのは海外でもアリ、ということだろうか。でも、あのへんはアメコミ特有のノリのような気も…。
「ダーティーハリー」とかもあったか…。主人公の名前が「ハリー」ではあるけど、アレはちょっと捻ってた気がする。たしかあだ名なんだっけか。違ったかな。
「ナイトライダー」とか…。アレは主人公機の名前なの? ちょっと違う気もする…。ナイトライダーって一体何を指していたんだろう?
海外風のタイトルにしようと意識して考えていくと、日本のノリとは違ってきそう…。日本でヒットしたあの作品タイトルを海外風にしたらどうなるか? と予想する遊びもちょっと楽しいかもしれない。
「機動戦士ガンダム」が「白い木馬と赤い髪の少年」になったり、とか? …元々ガンダムって「十五少年漂流記」が元ネタなんだっけか。「十五少年漂流記」の原題は…ググったら「2年間の休暇」と出てきた。うわー、そういうノリか…。そのノリでガンダムの海外風タイトルを想像すると…どうなるんだ…? 海外風タイトルを想像するのは、なかなか難易度が高そうです。そういうノリかあ…。
妄想メモです。オチはないです。
◎ 余談。「十五少年漂流記」のタイトルついて :
ググってたら、ちょっと興味深い話が。
_十五少年漂流記 - Wikipedia
「冒険奇談 十五少年」とな。日本においては明治時代から、なんとかかんとかホニャラララ、の型が存在していたような気がしてきた…。てっきり昭和に流行った型なのかなと思い込んでいたけど、実は歴史がある型なのかもしれない…?
_十五少年漂流記 - Wikipedia
日本では1896年(明治29年)に森田思軒により博文館の雑誌『少年世界』に『冒険奇談 十五少年』(「冒険」という熟語は訳出時に造られた)として英訳から抄訳・重訳して連載され、
「冒険奇談 十五少年」とな。日本においては明治時代から、なんとかかんとかホニャラララ、の型が存在していたような気がしてきた…。てっきり昭和に流行った型なのかなと思い込んでいたけど、実は歴史がある型なのかもしれない…?
[ ツッコむ ]
以上、1 日分です。