0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

py2appでアプリを作るとアイコンが踊るときがあるので調査してみた

Last updated at Posted at 2022-03-25

fileをDockへdropしたときに起動するアプリを作る過程で、アイコンが踊るときと踊らないときがあったので調査してみました。

環境

  • os: macOS Mojave
  • Python: 3.9
  • py2app: 0.27

結果

# setup.py
OPTIONS["argv_emulation"] = {"argv_emulation": True}

というコードをsetup.pyに挿入してdrag and dropを有効にすると、アイコンが踊るの止めることができました。

追加調査

生成されたapp folder内のpython fileの以下のコードをコメントアウトするとアイコンが踊りだすことを確認

# ⁨dist/⁨helloworld.app⁩/⁨Contents⁩/⁨Resources⁩/__boot__.py
    while running[0] and now - start < timeout[0]:
        event = ctypes.c_void_p()

        sts = carbon.ReceiveNextEvent(
            1,
            ctypes.byref(eventType),
            start + timeout[0] - now,
            TRUE,
            ctypes.byref(event),
        )

        if sts == eventLoopTimedOutErr:
            break

        elif sts != 0:
            print("argvemulator warning: fetching events failed")
            break

        sts = carbon.AEProcessEvent(event)
        if sts != 0:
        
            print("argvemulator warning: processing events failed")
            break

"carbon.ReceiveNextEvent " という関数が原因だと思いますが深みにはまりそうだったので調査を打ち切りました。

wiki: Carbon(カーボン)は、Classic Mac OSのToolbox API (Application Programming Interface) をMac OS X用に整理・移植したAPIであり、Classic Mac OS用アプリケーションをMac OS X向けに移植しやすくするために開発された。

その他

調査に使ったapp生成用file

# helloworld.py
print('hello')
import time
time.sleep(4)
print('end')
# setup.py
from setuptools import setup

APP = ['helloworld.py']
DATA_FILES = []
OPTIONS = {}
OPTIONS["argv_emulation"] = {"argv_emulation": True}

setup(
    app=APP,
    data_files=DATA_FILES,
    options={'py2app': OPTIONS},
    setup_requires=['py2app'],
)

terminal上で実行した生成コマンド

python setup.py py2app

備考

システム環境設定>Dock>起動中のアプリケーションをアニメーションで表示 のチェックボックスをOFFにすることでアイコンが踊るのを止めることができるので、ユーザ側で対処することも可能

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?