問題タブ [gobject]

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.

0 投票する
0 に答える
492 参照

python - DBus Rhythmbox Gobject セット プロパティ

Python の Gobject Introspection に問題があります。DBUS 経由で Rhythmbox にアクセスしようとしていますが、org.mpris.MediaPlayer2.Player 内のメソッドにアクセスできますが、org.mpris.MediaPlayer2.Player の属性の値を設定しようとしていますが、うまくいきません。

player.PlayPause() のようなメソッドを使用できます。私がしようとしているとき

次のエラー メッセージが表示されます。

0 投票する
1 に答える
1088 参照

python - python gtk gobject ウィンドウの可視性を切り替える

「F12」などのキーを使用してウィンドウを非表示および表示するためのグローバルショートカットの例を作成しました。python-xlib と「pyxhook」という名前のスクリプトを使用しました。ゾンビを回しますが、ボタンだけを非表示にして表示するのと同じコードです。

編集:純粋なpythonキーバインダーをコーディングする代わりに、キーバインダーライブラリを使用して問題を解決しました。 http://kaizer.se/wiki/keybinder/

0 投票する
2 に答える
761 参照

javascript - JavaScriptでGVariantを解凍します

GSettingsにタイプのGVariantとして格納されている配列があり、a(ss)これをCinnamonアプレットで使用します。次のコードを使用して、値を正常に取得できます。

しかし、私はそれを開梱することはできません。私が見る限り、おそらくGVariantIter構造体を使用して解凍する必要がありますが、ドキュメントが限られており、gjs APIで正しいインターフェイスを見つけることができません(実際に存在する場合)。誰かがそれを行う方法を知っていますか?

ありがとう!

編集: 私のスキーマは次のようになります:

とりあえず、JSON設定を保存するために外部ファイルを使用していますが、100%満足のいく解決策ではありません。2つのas型変数を維持し、それらを整列させておくことができると思いますが、これを適切に行う方法が必要ですよね?

0 投票する
2 に答える
1902 参照

python - Gtk.TreeView (CellRenderer) の Gtk.Entry

Gtk.Entryを(Gtk.EntryCompletion接続して) を のセルにパックしたいGtk.TreeView。これを行う方法を知っている人はいますか?(表形式ビューのテキスト エントリで入力補完が必要なだけです。)

Gtk.CellRendererまたはをサブクラス化し、メソッド (または同様のもの)Gtk.CellRendererTextをオーバーライドする必要がありますか? start_editingサブクラス化の例を見つけることができますがGtk.CellRenderer、編集可能な動作を変更することはできません。Gtk.CellRendererTextクラスのソースコードも見つかりません。

私は Gobject イントロスペクション (すなわちfrom gi.repository import Gio, Gtk, GLib, Gdk) を使用しています。

0 投票する
1 に答える
1238 参照

c - G_DEFINE_INTERFACEが「予期される宣言指定子」コンパイラエラーをトリガーするのはなぜですか?

GObjectに慣れるために、リファレンスマニュアルの例に従って「Hello、world」インターフェイスを作成しようとしています。これが私が持っているものですhello_world_if.h

とでhello_world_if.c

しかし、これはコンパイルされません:

ここで他の回答を読むと、この「予期される宣言指定子」メッセージは、必要なヘッダーファイルがインクルードされていない、インクルードが遅すぎることを意味しているようです。しかし、私はそれがここでどのように当てはまるのかわかりません。#include <glib.h>(具体的には、Cファイルにまたはを追加#include <glib-object.h>しても何も変更されません。)

単純なものが欠けているに違いないが、見当たらない。ヘルプ?

0 投票する
1 に答える
354 参照

python - GtkBinからの拡張

GtkがすべてのTreeViewのようなウィジェットで使用する「クイック検索」エントリに似たカスタムウィジェットを作成しようとしています。

これが私の最初のアイデアの簡単な例です:

問題は次のとおりです。

  • この例のように、単独で使用すると、カスタムウィジェットにスペースが割り当てられているように見えますがGtkEntry、画面に表示されません。GtkEntryとカスタムウィジェット(hexpand、vexpand、margins、alignsなど)のプロパティのさまざまな組み合わせを試しましたが、役に立ちませんでした。
  • 他のウィジェットと組み合わせると、ウィジェットに割り当てられた高さをインタラクティブに照会すると、明らかに1になります。画面上では、ウィジェットは事実上表示されません(他のウィジェット間で多少「押しつぶされている」ため)。

それで、オブジェクトの初期化に欠けているものがありますか、それともこのカスタムウィジェットをどのように使用していますか?これは固有の問題GtkBinですか?で同じことを試してみましたが、問題なく動作しますが、この特定のウィジェットに適しているGtkBoxと思います。GtkBin

0 投票する
1 に答える
1995 参照

c - Glibシグナル-インスタンスのハンドラーがすでにブロックされているかどうかを確認するにはどうすればよいですか?

インスタンスg_signal_handler_blockのハンドラーがでブロックされた後、たとえばブール変数に状態を格納する以外に、ハンドラーがまだブロックされているか、g_signal_handler_unblockによってブロック解除されているかどうかを確認できますか?

そのようなことが可能になることを望みました

しかし、"g_signal_handler_is_blocked"関数は存在しません。g_signal_handler_is_connectedシグナルハンドラは接続されたままであるため、は使用するのに適切な関数ではありません。したがって、関数はTRUEを返します。

g_signal_handler_find ()マッチタイプの一つとしてあるので試してみG_SIGNAL_MATCH_UNBLOCKEDましたが、まだうまくいきません。とにかくコードを書き直しましたが、ブロック/ブロック解除を比較的頻繁に使用しているので、それが可能かどうかを知りたいと思います。

0 投票する
2 に答える
2267 参照

python - PyGtkメインを強制的に再描画します

私は次のようなUI構造を持っています:
1x水平ボックス->8x垂直ボックス->2xセクション(GObject)-> 1x RectangleWidget(gtk.DrawingArea)

これは、2行に16個のカイロ長方形のテーブルです。

cairo長方形ウィジェット自体は、gtk.DrawingAreaのサブクラスであり、expose-handlerを備えています。

プログラムを書き直したところ、データ構造とUIが完全に分離されました。バックグラウンドで実行されているスレッドがあり、データ構造を更新しています。UIのforntでgobject.threads_init()呼び出されます。100msgobject.timeout_add(100, self.update_widget)のタイムアウト後、メインは信号を発信しますが、これは最初のウィジェットでのみ受信されます。

ここでexpose-handler:

注:
ウィンドウを最小化して復元すると、ウィジェットはgsignalを受信し、更新されます。

私はさまざまなアプローチを試しました。スレッド化、異なるシグナリングを含む...すべてのアプローチは、上記と同じ動作につながります。

gtk.mainに他のウィジェットを返して再描画させるにはどうすればよいですか?

0 投票する
0 に答える
392 参照

python - Python - os.listdir でブロックされたスレッド

プログラムのメイン スレッドにメインループがあります (メインループは、ディスク I/O イベントを待機している DBusGMainLoop です)。イベント ハンドラが呼び出されるたびに、ファイルのコピーのために新しいスレッドが分配されます。この時点で奇妙なことが起こります。イベントが呼び出され、スレッド 1が開始されたとします。スレッド 1return os.listdir(path)は、2 番目のイベントが発生して2 番目のスレッドが開始されるまで、行 ' ' でブロックされます。その後、スレッド 1は正常に動作し続けますが、スレッド 2はブロックされます。また、Ctrl-C でメインループを中断すると、両方のスレッドが機能することにも気付きましたが、明らかにメイン スレッドはイベントの待機を停止します。

なぜこれが起こるのか、誰かが何かヒントを与えることができますか?

このコードは、メイン関数で実行されます。

これは、イベント ハンドラーが新しいスレッドを開始する場所です。

これは、スレッドがブロックされているように見える方法です。

0 投票する
2 に答える
940 参照

c - GTK/GObject detailed_signal パラメータ

GObject リファレンス マニュアルでは、関数について次のことを示します。

"signal-name::detail"の形式のdetailed_signal文字列パラメーターが必要です。私の最初の理解では、渡す信号の詳細が事前に定義されているということです。その場合、これらのリストはどこにありますか? そうでない場合、それは正確には何を意味するのでしょうか。