1

Linux (Ubuntu) で Python wxWidgets アプリケーション ウィンドウのクラス名を設定する必要があります。デフォルトでは「python」に設定されています。

アプリ オブジェクトで SetAppName() および SetClassName() メソッドを呼び出してみましたが、効果がないようです。

基本的に私がやろうとしているのは、アプリケーション ウィンドウのクラス名をカスタム値に変更して、それを Cairo ドックのアイコンに関連付けることです。

アプリケーションは Pronterface ( https://github.com/kliment/Printrun ) です。

いくつかの詳細


基本的に今、私はカイロドックにPronterfaceの正しいアイコンを持つランチャーアイコンを持っています(アイコンを手動で設定できます)。

問題は、Pronterface Cairo ドックを起動すると、Pronterface ウィンドウがランチャーに関連付けられないことです。ウィンドウの Python ロゴを使用して、ランチャーに新しいアイコンを作成します。

Cairo ドックがランチャーに属するウィンドウを識別できるように、プログラム クラス名を入力するランチャー オプション (および開いているウィンドウからそれを取得するツール) があります。

問題は、Pronterface のクラス名が「python」であることです。これを使用すると、Pronterface ランチャーが Pronterface ウィンドウだけでなく、任意の wxWidget python アプリケーション (またはおそらく任意の python UI アプリケーション) に関連付けられます。

そのため、クラス名を変更したいと考えています。

4

1 に答える 1

2

wx.App の SetAppName() メソッドを探しているかもしれません。別の方法として、フレームの SetTitle() メソッドもありますが、既に試したことがあると思います。

編集:

wxPython-devでこれについて尋ねたところ、Windows で思い出したことを思い出しました。アプリケーションを正しく動作させるには、PyInstaller などを使用してアプリケーションをフリーズする必要がある場合があります。一方、これは wxPython の作成者である Robin Dunn が言わなければならなかったことです:

X11 ライブラリの奥深くにあるアプリケーションとウィンドウには、クラス名として使用する文字列を割り当てることができます。Motif ツールキットが王様だった昔は、.Xdefaults ファイルを使用して、アプリケーションの UI 要素をユーザーがカスタマイズできるようにすることが非常に一般的でした。項目の色、フォント、またはその他の属性を設定できる今日の CSS によく似ていました。ウィジェット名とクラス名がアプリケーション プログラマーによって設定された場合、ボタンなどの特定のタイプのすべての要素、または特定のクラス名を持つすべての要素に対してプロパティを設定でき、ウィジェットまたはクラスを指定することもできます (またはそれらすべて) 特定の収容階層内など。

これらはすべて、X および Xt ライブラリーのカバーの下にまだありますが、GTK がそれをどのように公開したり、それ自体を使用したりするか (または使用するかどうか) についてはよくわかりません。古い wxMotif ポートでは、wx は SetName メソッドに渡されたものを使用して X ウィジェット名を設定しますが、wxGTK ポートではその名前で特別なことをしているとは思いません。

于 2013-08-06T14:45:48.257 に答える