問題タブ [wxpython]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
event-handling - 開いている wx.ComboCtrl でキーストロークを受け取る
この質問から来て、ラジオボタンの束を持つパネルで作られたカスタムポップアップを備えた wxComboCtrl があります。私の問題は、イベントがパネル自体によって処理されるため、ポップアップを開いたときにコンボがキーストロークを取得しないことです。 .. これらの KeyEvents をコンボの textctrl にリダイレクトしたいのですが、それを機能させる方法が見つかりません :/
間違った方向に進んでいますか? ユーザーがキーを押したときに textctrl 値を手動で処理する必要がありますか? 私はそれが少し面倒だと思います..おそらくtextctrlはすでにそれらのイベントを処理する方法を知っているので..
これが私のテストケース(Linux上のwxPython 2.8)です。「on_key」メソッドが原因であるはずです:
python - pythoncard アプリケーションにスクロールバーを追加する
アプリケーションのメイン フレームとしての scrollingwindow は、pythoncard ではまだサポートされていません。メイン フレーム (背景) にスクロール バーを追加するにはどうすればよいですか?
python - GUI アプリケーションの編成
これは一般的な質問になります。
特にGUIアプリケーションの設計に苦労しています。異なるパーツ間の相互作用を扱う。
共有状態をどのように処理すればよいかわかりません。一方では、共有された状態は良くなく、可能な限り明確にする必要があります。一方、状態を共有しないと、コンポーネント間に不要な結合が生じます。
例:
スクリプトを使用して、アプリケーションを Emacs/Vim のような方法で拡張できるようにしたいと考えています。明らかに、GUI が使用できるように、ある種の共有状態を変更する必要があります。私の最初の計画は、どこからでもアクセスできるグローバルな「セッション」を持つことでしたが、それについてはよくわかりません。
トリッキーな使用例の 1 つは、キー バインドです。ユーザーがスクリプトからカスタム キーバインドを指定できるようにしたい。各キーバインドは、セッションを唯一の引数として受け取る任意のコマンドにマップされます。
現在、エディター コンポーネントはキープレスをキャプチャします。セッションごとのキーマッピングにアクセスできる必要があるため、セッションにアクセスする必要があります。エディターをセッションに結合することは良い考えですか? 他のコンポーネントもキーバインディングにアクセスする必要があるため、セッションは共有され、シングルトンになる可能性があります...
MVC を超える GUI アプリケーションの設計について、何か良い読み物はありますか?
これは Python と wxPython、FWIW です。
[編集]: 具体的なユースケースを追加しました。
python - Vista UAC (ユーザー アクセス制御) 用の python IPC (プロセス間通信)
私は (wx)python で Filemanager を書いています - 多くはすでに動作しています。ファイルをコピーするときは、進行状況ダイアログ、上書き処理などがあります。
現在、Vista では、ユーザーがファイルを特定のディレクトリ (%Program Files% など) にコピーする場合、アプリケーション/スクリプトに昇格が必要ですが、実行時に要求することはできません。したがって、昇格した別のアプリ/スクリプトを起動する必要がありますが、これは機能しますが、メインアプリと通信する必要があるため、後者は進行状況などを更新できます.
検索したところ、共有メモリとパイプが最も簡単な方法であるという記事がたくさん見つかりました。だから私が探しているのは、共有メモリまたはパイプを使用した python バインディングを備えた「高レベル」のプラットフォームに依存しない ipc ライブラリです。
すでに ominORB、fnorb などを見つけました。それらは非常に興味深いように見えますが、TCP/IP を使用しています。共有メモリまたはパイプを使用する同等のライブラリはありますか? ipc-client は常に同じマシン上にあるため、ここではソケットは必要ないようです。また、ユーザーが個人のファイアウォールで ipc-socket-communications を許可する必要があるのではないかと心配しています。
編集: 私は本当に高レベルを意味します: stdin/stdout に文字列を送信する代わりに、omniORB を使用する場合のように、いくつかの関数を呼び出すことができれば素晴らしいでしょう。
python - wxPython でドラッグ & ドロップを行う OLE の方法
MS Windows で実行されている wxPython アプリがあり、そのインスタンス間のドラッグ アンド ドロップをサポートしたい (したがって、ユーザーはアプリを 3 回開き、あるインスタンスから別のインスタンスにデータをドラッグします)。
wxPython での単純なドラッグ アンド ドロップは次のように機能します。
- ユーザーがドラッグを開始: ソース ウィンドウは、必要なデータを wx.DataObject() にパックし、新しい wx.DropSource を作成し、そのデータを設定して、dropSource.DoDragDrop() を呼び出します。
- ユーザーがデータをターゲット ウィンドウにドロップします。ドロップ ターゲットは、実際のデータをその wx.DataObject インスタンスに転送するライブラリ関数 GetData() を呼び出し、最後に - dataObject.GetData() が実際のデータをアンパックします。
ユーザーがドロップ後にドラッグするデータを選択できる、より洗練されたドラッグアンドドロップが必要です。私の夢
のシナリオ:
- ユーザーがドラッグを開始: ソース ウィンドウへのポインターのみがパックされます (関数またはオブジェクト)。
- ユーザーがターゲット ウィンドウにデータをドロップ: 適切なダイアログが表示され、どのドラッグ アンド ドロップ モードを選択するかをユーザーに尋ねます (曲のタイトルのみをドラッグするか、曲のタイトルとアーティスト名またはドラッグしたアーティストのアルバム全体をドラッグするかなど)。
- ユーザーがドラッグ アンド ドロップ モードを選択します。ドロップ ターゲットは、ドラッグされたデータ オブジェクトに対して何らかの関数を呼び出し、ドラッグ ソースからデータを取得してドロップ ターゲットに転送します。
私の夢のシナリオは MS Windows で実行可能に思えますが、wxWidgets と wxPython のドキュメントはかなり複雑で曖昧です。すべての wx.DataObject クラスが wxPython で利用できるわけではありません (wx.PySimpleDataObject のみ)。そのような動作は、winAPI で直接コーディングすることなく、wxPython で実装できますか?
編集: Toni Ruža は、ドラッグ & ドロップの例で答えを出しましたが、それはまさに私の夢のシナリオではありません。彼のコードはデータがドロップされたときにデータを操作しますが ( HandleDrop()はポップアップ メニューを表示します)、データはドラッグが開始されたときに準備されます ( On_ElementDrag()で)。私のアプリケーションでは、3 つの異なるドラッグ アンド ドロップ モードが必要であり、そのうちのいくつかは時間のかかるデータ準備が必要です。そのため、ユーザーがデータをドロップして (コストがかかる可能性がある) d&d モードを選択するまで、データの取得を延期したいと考えています。
また、メモリ保護の問題については、MS Office のように、プロセス間通信に OLE メカニズムを使用したいと考えています。Excel の図をコピーして、MS-Word に貼り付けると、画像のように動作します (まあまあ)。それが機能するので、winAPIで実行できると思います。wxPythonでコーディングできるかどうかわかりません。
python - wxpython の Easy_install に「setup script」エラーがある
/sw/bin/に配置されたpython 2.5のインストールがあります。私は簡単なインストールコマンドを使用します
wxpython をインストールしようとすると、wxPython-src-2.8.9.1.tab.bz2 の処理中に、セットアップ スクリプトがないというエラーが表示されます。Easy-install は、このインストールまで、他のいくつかのインストールで機能しました。なぜそれが今つぶれているのかについての助けはありますか?
編集:シェルプロンプトにダンプする前にエラーが発生します。
http://wxPython.org/download.phpを読む
ベストマッチ: wxPython src-2.8.9.1
ダウンロードhttp://downloads.sourceforge.net/wxpython/wxPython-src-2.8.9.1.tar.bz2
処理 wxPython-src- 2.8.9.1.tar.bz2
エラー: /tmp/easy_install-tNg6FG/wxPython-src-2.8.9.1.tar.bz2 にセットアップ スクリプトが見つかりませんでした
python - wx.StaticBox で StaticText アイテムが消える
垂直サイザーで staticbox と staticboxsizer を作成しています。私にとってはすべてうまくいきますが、顧客の環境ではうまくいきません。
staticbox 内のすべてが表示されますが、ラベルのみが表示されます。以下のスニペットは、staticboxsizer の作成方法を示しています。
comp.MinMaxLabel_* は、wx.StaticText(label='blah') を返します。派手なものはなく、単なるラッパーです。これは、他のサイザーの他の ~400 個のアイテムに対して正常に機能します。ただし、StaticBox または StaticBoxSizers では、顧客のセットアップで StaticText が表示されません。
通常、私の設定では次のように表示されます: 代替テキスト http://img152.imageshack.us/img152/8758/normalnu9.jpg
これは私が顧客のセットアップで得たものです: 代替テキスト http://img258.imageshack.us/img258/2351/problematiczo2.jpg
どちらのセットアップも同じ wxpython バージョン 2.8.9.1 を使用しています。しかし、私の環境では 2.8.* も表示されます。助言がありますか?
wxpython - ScrolledWindow と wx.EVT_LEAVE_WINDOW
textctrl のあるフレームがあります。マウスが textctrl に入ると (EVT_ENTER_WINDOW)、textctrl の上に PopupWindow を表示し、マウスがポップアップから離れると (EVT_LEAVE_WINDOW) 再び非表示にします。
PopupWindow 内に scrollbars が表示された ScrolledWindow がある場合を除いて、すべて正常に動作します。マウスをスクロールバーの上に移動するとEVT_LEAVE_WINDOWが発生するため、wxPythonはスクロールバーがスクロールウィンドウの一部ではないと考えているようです.. :/イベントをポップアップまたはスクロールウィンドウ自体にバインドしようとしましたが、何も変わりません. . これを回避する方法はありますか?
どうもありがとう!
(Xubuntu 8.10 上の wxPython 2.8.8.0)
python - wxPython を使用して 3 ペイン ウィンドウをレイアウトするにはどうすればよいですか?
wxPython を使用して 3 ペイン ウィンドウをレイアウトする簡単な方法を見つけようとしています。
左ペインにツリー リストを表示し、右ペインを 2 つに分割して、上部に編集コンポーネント、下部にグリッド コンポーネントを配置したいと考えています。
次のようなもの:
ウィンドウのサイズを変更できるようにし、境界線をドラッグしてウィンドウ内の各コンポーネントの (相対的な) サイズを変更できるようにしたいと考えています。
サイザーやスプリッター ウィンドウ コンポーネントの組み合わせが必要だと思いますが、ドキュメントや Web でこの種のウィンドウの適切な例を見つけることができません。
python - (wx)python を使用した外部プログラムのログ出力
Oracle exp/imp コマンドを使用し、sqlplus を介して SQL スクリプトを開始するための GUI を作成しています。サブプロセス クラスを使用すると、コマンドを簡単に起動できますが、追加の機能が必要です。wxPython GUI を使用するときにコマンド プロンプトを削除したいのですが、exp/imp コマンドの出力を表示する方法が必要です。
私はすでにこれらの2つの方法を試しました:
これらの方法の 1 つ (どの方法を忘れたか) を使用して、exp/imp の出力を実際に取得しましたが、コマンドが終了した後でのみ、これらの実行時間が長くなる可能性のある操作中に頻繁に更新する必要があるため、これはまったく価値がありません。また、sqlplus は、エラーが発生したときに何らかの入力を必要とするため、さらに多くの問題を引き起こしました。これが発生すると、python はプロセスが終了するのを待ちますが、ユーザーにはプロンプトが表示されないため、待機時間や何をすべきかわかりません...
私が欲しいのは、標準のコマンドラインで表示できるすべてのものを出力するラッパーです。これをファイルに記録し、wxPython コントロール内に表示したいと考えています。
このページのコードも試しました: http://code.activestate.com/recipes/440554/ しかし、これも出力を読み取ることができません。この回答の OutputWrapper も機能しません: wxPython アプリケーションからすべての例外をキャプチャするにはどうすればよいですか?
どんな助けでも大歓迎です!
編集:
サブプロセスは出力をフラッシュしていないようです。私はすでに .readline() で試しました。
私のツールは Windows と UNIX で実行する必要があるため、Windows バージョンがない場合、pexpect は解決策になりません。また、exp、imp、および sqlplus の機能全体を再構築する必要があるため、cx_oracle を使用するのは非常にやり過ぎです。