1

現在、Linux ボックスで 2.8.9.1 の wx を実行しています。

私が取り組んでいるアプリは、もともと MS Windows で実行するために作成されました。コア ロジックの一部を Linux に移植し、プロセスとして実行する予定です。

問題は、Linux ボックスがヘッドレスであることです。X-windows 環境はありません。しかし、既存のコードベースは、wx レイヤーと密接に結合されるように記述されています。

たとえば、wx.EvtHandler のサブクラスであるいくつかのクラスがあります。

1つずつ書き直すことはできるかもしれませんが、理想的ではありません。

新しい wx Pheonix には、 X-Windows なしでイベント ループを開始できるように見えるAppConsole クラスがあります。ただし、私のローカル バージョンの wx では使用できません。

目標は、最終的には cron ジョブでコードを実行することです

基本的に、この問題に取り組む方法についてのアドバイス/指針を探しています。書き直しはなるべく避けた方が無難です。

4

2 に答える 2

2

1 つの方法は、ローカル ディスプレイを使用することです。ディスプレイをワークステーションにリダイレクトするSshオプションを使用してサーバーに-X

ssh -X server

サーバーでアプリケーションを起動すると、ワークステーションのディスプレイが自動的に使用されます。

Windows には、XmingCygwinなどがあります。

代わりにXvfb、ヘッドレス X サーバーを提供する を使用できます。xvfb-runその後、 asを使用してアプリケーションを起動できます。

xvfb-run my_wx_application
于 2013-02-12T00:03:43.550 に答える
0

書き直しはそれほど悪くないことがわかりました。

コード内の wx オブジェクトへの依存関係は 3 つだけです

1) wx.EvtHandler のサブクラス化

2) wx.CallLater

3) wx.CallAfter

したがって、最初のケースでは再実装が必要です

もう 1 つは、threading.Timer に簡単に置き換えることができます。

于 2013-02-12T01:56:15.973 に答える