PyInstaller (PyQt5, установленный с pip) всегда дает мне ошибку импорта PyQt5.sip

Как насчет сверхгибкого экрана запуска, который может использовать тот же код и определен в AndroidManifest.xml, поэтому код никогда не понадобится изменять. Я вообще-то разрабатываю библиотеки кода и не люблю настраивать код, потому что он неаккуратный.

<activity
        android:name=".SplashActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
        <meta-data android:name="launch_class" android:value="com.mypackage.MyFirstActivity" />
        <meta-data android:name="duration" android:value="5000" />
</activity>

Затем сам SpashActivity ищет метаданные для «launch_class», чтобы затем сделать сам Intent. «Длительность» метаданных определяет, как долго экран заставки будет оставаться.

public class SplashActivity extends Activity {

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    setContentView(R.layout.activity_splash);

    ComponentName componentName = new ComponentName(this, this.getClass());

    try {
        Bundle bundle = null;
        bundle = getPackageManager().getActivityInfo(componentName, PackageManager.GET_META_DATA).metaData;
        String launch_class = bundle.getString("launch_class");
        //default of 2 seconds, otherwise defined in manifest
        int duration = bundle.getInt("duration", 2000);

        if(launch_class != null) {
            try {
                final Class<?> c = Class.forName(launch_class);

                new Handler().postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        Intent intent = new Intent(SplashActivity.this, c);
                        startActivity(intent);
                        finish();
                    }
                }, duration);

            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
        }
    } catch (PackageManager.NameNotFoundException e) {
        e.printStackTrace();
    }
  }
}
1
задан Joe Doe 13 July 2018 в 18:13
поделиться

1 ответ

Я установил его с добавлением PyQt5.sip к параметру pyinstaller --hidden-import: pyinstaller filename.py --hidden-import=PyQt5.sip

1
ответ дан Joe Doe 17 August 2018 в 12:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: