問題タブ [pygobject]
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.
python - PyGObject - ステータス アイコンの左クリック メニュー
私はGnome用の小さなパネルアプレットを書き始めています。ユーザーがステータスアイコンを左クリックして、ボリュームを設定できるGnome 3のサウンドアイコンなど、いくつかのオプションと情報を表示できるようにしたいと思います右クリックで環境設定を設定しながら、左クリックで。右クリックのコードは次のとおりです。
ここright_button_click
で、右クリック イベントで呼び出される関数の名前です。重要な部分は"popup-menu"
. 左クリックイベントを設定するための代替手段は何ですか?
python - pygobject および pygtk の gobject-introspection の構成に関する問題
Mac に pygtk をインストールしようとしていますが、pygobject をインストールするように求められ、それから gobject-introspection を取得するように求められました。このインストールで私が抱えている問題は、構成中に次のエラーが表示されることです。
FFI を
チェックしています... ffi.h をチェックしていません... 構成: エラー: ffi.h が見つかりません
gtk を取得する必要があるため、これを手伝ってください。
/usr/include/ffi->ffi.h の場所
前もって感謝します
python - Python を使用した GTK のスレッド化は PyGObject イントロスペクションで変更されましたか?
プログラムを PyGTK から PyGObject イントロスペクションに初めて変換する過程にあり、スレッド化で障害にぶつかりました。完了するまでに時間がかかるプロセスがあるため、進行状況バーが表示されたダイアログをポップアップし、スレッドを使用してプロセスを実行し、進行状況バーを更新します。これは PyGTK では正常に機能しましたが、PyGObject に変換した後、通常の不適切なスレッド化の奇妙な現象がすべて発生します。プログラムはハングしますが、プロセスのさまざまな部分でハングしているように見えます。何を理解していません。
この簡単な PyGTK プログレスバーの例を次に 示します。私はそれを PyGObject イントロスペクションに変換しましたが、私のプログラムと同じ問題が発生しました: ハングしたり、進行状況バーを適切に更新したりしません。
Gdk のスレッド機能のドキュメントでは、gdk_threads_init() を実行する前に g_thread_init(NULL) を実行する必要があることを強調しています。ただし、それを実行するには、追加のライブラリをいくつかリンクする必要があります。イントロスペクションを通じて GLib をインポートしようとしてから、GLib.thread_init() を実行しようとすると、次のエラーが発生します。
これは、追加のスレッド ライブラリがリンクされていないためだと思います。これがスレッドの問題の原因である場合、これらのライブラリがリンクされているかのように GLib を操作するにはどうすればよいですか?
python - PyGObjectを使用してGTK2の列ヘッダーボタンにポップアップメニューを追加するにはどうすればよいですか?
ユーザーが のヘッダー行を右クリックしたときに、コンテキスト メニューをポップアップ表示したいと考えていますGtk.TreeView
。GTK3 にGtk.TreeViewColumn
は、これを簡単にする get_button() メソッドがあります。メニューをボタンにアタッチし、それを「クリック」イベントに接続するだけです。ただし、GTK2 では、これは機能しません。get_widget()
経由でウィジェットを設定していない場合は、None を返すメソッドのみを呼び出すことができますset_widget()
。Gtk.Label
列名を含む を に入れ、Gtk.EventBox
それをウィジェットとして設定しようとしましEventBox
た。 を 'button_press_event' のコールバックに接続した後、それをクリックしてもイベントは生成されません。
ここにリストされているようなことをしようとしましたがget_parent()
、列ウィジェットで実行すると None が返され、コードが示すようにボタンに到達しません。
人々はこれに対してどのような解決策を見つけましたか?
python - 不思議なGObject警告:アサーション `G_IS_OBJECT(object)'が失敗しました
GTK(Python GObjectイントロスペクション)アプリケーションを実行すると警告が表示され、そのソースがわかりません。アプリケーションがロードされていて、GtkListStoreにデータを入力しているとき、最初に行を追加した後、次の警告が表示されます。
残りの行は、それ以上の警告なしに追加されます。実際、これは常に1回だけ発生し、常に最初に追加されるアイテムで発生します。ただし、行の実際の内容は重要ではないようです。何があっても警告を発します。プログラムのロードが完了すると、TreeViewで行を参照すると、すべての行に問題がないように見えます。
私のリストストアは次のようになります。
最後の数列は関連するGtkTreeViewから隠されていますが、警告はTreeViewが作成される前に発生するため、ListStoreからのものであると確信しています。言うまでもなく、渡すすべての行が含まれていると確信しています。私が言ったように、最初にどの行を追加しても、警告は常に最初の行の後に発生するため、正しい形式です。
誰かがこれを引き起こしている可能性があるものを知っていますか?アプリケーションの実行を妨げることはないので、緊急ではありませんが、エンドユーザーに警告を発することは避けたいと思います。
編集:Pythonの-W all
コマンドライン引数を使用して、警告が実際にすべての行で発生していることを確認しました。
append()
を使用してメソッドにステップインしようとしましたが、興味深いことに、GdkPixbufを含む列の値を設定しようとするとpdb
、コード内でループが発生するため、プログラムのデバッグ時に警告が表示されることはありません。gi
私の推測では、Pixbufが問題を引き起こしていると思いますが、警告を取り除くためにそれを変更する方法がわかりません。PixbufはTreeViewで正しくレンダリングされるため、何が起こっているのかわかりません。
python - Python3をサポートするPyGObjectをインストールする方法
私はさまざまな方法を使用してPyGObjectをインストールしようとしています。まず、を使用しapt-get
ますが、それはPython2.xにのみインストールされます。次に、自分でコンパイルしようとしましたが、Python3用にコンパイルするのに問題がありました。
誰かがそれをインストールする方法を知っていますか?
events - Gtk スイッチのアクティブ化信号が発火しない
アプリで Gtk.Switch ウィジェットを使用しようとしていますが、クリックしても「アクティブ化」シグナルが発火しません。reture/space キーを押してキーボードでウィジェットを使用すると正常に動作しますが、クリックしても「アクティブ化」イベントは発生しません。
Gtk.Switch のクリックのシグナルを登録するために何をすべきかについての考え
python - Python GUI アプリケーションを単体テストするための推奨される方法は何ですか?
私は現在、Python デスクトップ アプリケーション用に 2 つの並列コード ベースを維持しようとするほど愚かです。1 つは GTK 3 用の PyGObject イントロスペクションを使用し、もう 1 つは GTK 2 用の PyGTK を使用しています。 PyGTK ブランチ。これらの実装にはすべて小さな違いがあるため、私は見過ごして破損を引き起こし、見逃して誤ってリリースし、ユーザーに捕まるだけです。
できれば両方のコードベースで実行するのに適した、いくつかの単体テストを設計するための良い方法を見つけようとしています。それは過度に複雑なプログラムではありません (これは本質的にライブラリ管理ツールであり、iTunes のように想像してください):
ビューをモデルからできるだけ分離しようとしました。これらの項目のそれぞれは、独自のクラスで実装されます (まあ、リストされている GTK クラスから継承するクラスで)。ListViews は、ListStores から継承する他のクラスと結合されています。ライブラリ自体は別のクラスによって処理されます。それにもかかわらず、テストする必要があるウィジェット間の相互作用があります。たとえば、ユーザーがフィルタ ビューで特定のアイテムを選択してライブラリをフィルタリングし、フィルタリングされた結果からアイテムを選択した場合、テキスト ビューには正しいライブラリ エントリの情報を表示する必要がありますが、これは翻訳のためにやや複雑です。 TreeModelFilter と元の ListStore などの間の iters など。
では、そのような GUI アプリケーションの堅牢な単体テストを作成するための推奨される方法は何ですか? これにはいくつかのライブラリがあることがわかりましたが、pygtk の主要なライブラリは何年も更新されていないため、PyGObject イントロスペクションでほぼ確実に失敗します。おそらく私は、Python のモジュールを使用してそれを行う良い方法を見つけるほど創造的ではないunittest
ので、提案を受け付けています。
python - ビルドアウト:システムPythonからの依存関係を使用する
私はPythonパッケージのビルドアウトを使用しようとしています。これは、使用されると、 dbus-pythonと pygobjectの2つの拡張モジュールに依存します。どちらのモジュールもビルドアウトを失敗させます。dbus-pythonにはファイルがありませんが、setup.py
ファイルはありますpygobject
が、その使用は推奨されていません。代わりに、configure、make、makeinstallを使用する必要があります。そのため、ビルドアウトでは、開発環境でこれらの依存関係を設定できません。
これが私のbuildout.cfg
:
パッケージsetup.py
の場所:foobar
解決策を探しているときに、システム全体にインストールされた卵を利用するz3c.recipe.scripts
レシピとその機能に出くわしました。しかし、私の..に適用するとbuildout.cfg
..両方のパッケージ( dbus、gobject)が私のシステムPythonにインストールされていますが、効果がないように見えます(まだ失敗します) 。行を削除しても同じことが言えますallowed-eggs..
。
私の質問:ここで概念レベルで何か問題がありましたか、それともエラーがありますbuildout.cfg
か?
configure、make、zc.recipe.cmmi
makeinstallを使用して卵をインストールするレシピがあることを知っています。ただし、私の場合は、システムのPythonの卵を参照するだけで十分です。ビルドアウトによって生成された100%再現可能な環境は必要ありません。また、dbus-pythonとpygobjectは、使用が意図されている環境であるほとんどのLinuxデスクトップシステムにデフォルトでインストールされます。foobar
python - WindowsにPyGI(Python Gobject Introspection)をインストールするにはどうすればよいですか?
Pythonインタープリターのインストール:http: //python.org/ftp/python/2.7.2/python-2.7.2.msi および: http: //ftp.gnome.org/pub/GNOME/binaries/win32/pygtk/ 2.24 / pygtk-all-in-one-2.24.0.win32-py2.7.msi 実行:python import gtk ... Works
PyGIオールインワンインストーラーはありますか?実行:python import giエラー:モジュールgiをインポートできません... Windowsで動作させる方法は?Ubuntu 11.04では、何もインストールせずに実行されます。