問題タブ [gtktreeview]

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 投票する
2 に答える
295 参照

python - gtk.ListStore アイテムを自分のモデルと関連付ける方法

に表示する Project オブジェクトのリストがありますGtkTreeView。ユーザーが TreeView のアイテムの行をダブルクリックしたときに、プロジェクトの詳細を含むダイアログを開こうとしています。

現在、選択した値を TreeView (プロジェクトの名前) から を介して取得し、get_selection()そのプロジェクトを自分のリストで名前で検索して、選択内容を自分のモデルと関連付けます。

しかし、これはあまり適切ではなく (さらに、プロジェクトの名前は一意であると想定されています)、もっとエレガントな方法があるかどうか疑問に思っていました。

0 投票する
3 に答える
713 参照

python - モデルがフィルタリングおよびソートされる GtkTreeView のドラッグ ドロップ サポート

タイトルが示すように、gtk.TreeViewモデルがソートおよびフィルター処理された があります。ドキュメントによると、「ドラッグ アンド ドロップによる行の並べ替えは、並べ替えられていないストアでのみ機能します。」. 与えられた唯一の他の情報は、外部ソースの使用に関連していますが、この場合は必要ありません。

とにかく、drag-dest の受信信号とドラッグドロップ信号にハンドラーを提供して実装しようとしましたが、それでも次のエラーが発生します。

GtkWarning: GtkTreeDragDest インターフェイスをサポートしないモデルを使用し、ドラッグ アンド ドロップを有効にする場合は、GtkTreeView のデフォルトの 'drag_data_received' ハンドラーをオーバーライドする必要があります。これを行う最も簡単な方法は、'drag_data_received' に接続し、シグナル ハンドラーで g_signal_stop_emission_by_name() を呼び出して、デフォルト ハンドラーが実行されないようにすることです。gtktreeview.c のデフォルト ハンドラのソース コードを見て、ハンドラが何をすべきかを理解してください。(gtktreeview.c は GTK ソース コードにあります。) C 以外の言語から GTK を使用している場合は、派生などを介して、既定のハンドラーをオーバーライドするより自然な方法があるかもしれません。

それにも関わらず、まだ実装していませんが、クラッシュしないので動作させることができそうです。それにもかかわらず、これは私がむしろ受けたくない警告です。

それで、Pythonに相当するものはありg_signal_stop_emission_by_nameますか、それとも私はこれについて間違った方法をとっていますか?

0 投票する
5 に答える
3851 参照

python - Pythonを使用してGtkTreeviewで選択したアイテムの色を変更する

タスクを優先度別に一覧表示するためのpygtk.treeviewを含むダイアログがあります。各行には、その優先度に基づいて背景色が設定されているため、たとえば、最も高い優先度の背景は明るい赤になります。

行選択の色はそれほど簡単には変更できません。を使用して設定できますtreeview.modify_base(gtk.STATE_SELECTED, "#C4C4C4")が、優先順位の概念を強化するために使用される色とうまく機能する色はありません。

選択色を、通常の行の背景として使用される色の少し暗いバージョンに変更することを考えたので、上記の例では、それはより暗い赤になります。treeselectionのchangedシグナルに応答して上記の関数を呼び出してみましたが、動作しますが、ちらつきが大きくなります。

もう1つのアイデアは、選択範囲を透明に変更し、代わりに境界線を配置することでしたが、私が知る限り、これは不可能です。

  1. ちらつきを起こさずに、上記のように選択色を変更するにはどうすればよいですか?
  2. 行の周囲に境界線のみを設定して、選択範囲の表示を変更できますか?

注:これは、ユーザーが選択したテーマに違反していることを認識しています。それには正当な理由があると思います。優先度を色で示すと、すぐに認識できます。選択色はこれを隠します。別の提案があれば、私はそれらを受け入れますが、ユーザーが優先順位を識別しやすいようにする必要があります。

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

python - PyGTK TreeColumns すべての完全な重複

TreeView にいくつかの基本的なプロセス情報を表示する単純な PyGTK スクリプトを作成しました。

私の問題は、すべての列の値が同じであることです。

ノート:

  1. どうやらこれは最初の列と相関しています (つまり、最初の列のデータを変更すると、それが他のすべてのデータになります)

(提案があれば追加します)

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

gtk - GtkTreeView insert/update performance penalty because of sorting

I'm having performance problems when inserting many rows into a GTK treeview (using PyGTK) - or when modifying many rows. The problem is that the model seems to get resorted after each change (insert/modification). This causes the GUI to hang for multiple seconds. Leaving the model unsorted by commenting out model.set_sort_column_id(SOME_ROW_INDEX, gtk.SORT_ASCENDING) eliminates these problems.

Therefore, I would like to disable the sorting while I'm inserting or modifying the model, and re-enable it afterwards. Unfortunately, sorting can't be disabled with model.set_sort_column_id(-1, gtk.SORT_ASCENDING). Using the freeze/thaw functions doesn't work either:

So, how can I disable the sorting? Or is there a better method for bulk inserts/modifications?


Solution

Thanks to the information and links bobince provided in his answer, I checked out some of the alternatives:

1) Dummy sorting

This brought the time down from about 11 seconds to 2 seconds. Wow! But could be better, this was only for 1000 rows.

2) Removing model while updating

No noticable difference, 11 seconds.

3) Dummy sorting and the cool generator trick from the PyGTK FAQ

The result: The same estimated 2 seconds as in solution 1), but the GUI reacts during this time. I prefer this method. The modulo 200 can be tweaked to make the GUI more or less reactive if needed.

Maybe it's even possible to subclass gtk.TreeStore to get better results? Haven't tried that yet, but option 3) is good enough for now.

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

python - PyGtk - TreeView と選択された行

TreeView があり、それをクリックすると、次のエラーが表示されます。

最初のクリックで発生します。その後、正常に動作します。何が悪いのかわからない。コードは次のとおりです。

0 投票する
3 に答える
2653 参照

c# - 基礎となる TreeStore をフィルタリングする Gtk# TreeModelFilter をセットアップするには?

「GtkSharp TreeView チュートリアル」を読みました。著者は、基になる ListStore の TreeModelFilter をセットアップして使用する方法を説明しています (チュートリアル セクション「データのフィルタリング」の下)。この手法は、基礎となる階層 TreeStore では機能しないようです。マルチレベルの TreeStore をフィルタリングし、結果を TreeView に表示したいと考えています。それは私に本当に苦労を与えています。それを行うためのチュートリアル、サンプル、または提案はありますか?

以下はコードです。基本的にチュートリアルと同じコードですが、ListStore ではなく TreeStore の構築と作成に対処するための変更が加えられています。{TreeStore は、連絡先の「名前」と「電子メール アドレス」を保存するために使用され、ルート「友人」と「親戚」の子に分割 (および保存) されます }

[Windows Vista で mono 2.6.4 /monodevelop 2.4 / gtk-sharp 2.12 を使用しています。]

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

python - 行ごとに異なるコンボ モデルを持つ GtkTreeviewColumn

グローバルな値のセットがあります["Foo", "Bar", "Baz", "Quux"]。my の各行は、TreeViewこれらの値のサブセットのみを処理できるエンティティを表します。たとえば、最初の行は"Foo"andを扱い"Bar"、 2 行目は"Bar"andを扱い"Quux"ます。ComboBox各行が処理できる値の 1 つを選択できるようにする列が必要です。

ただし、私が今持っているコードから、列全体は のモデルを 1 つしか持つことができませんComboBox:

列全体のモデルを設定する機会は 1 回しかありません。行ごとに異なるストアを持ったり、何らかの方法で値をフィルタリングしたりする方法はありますか?

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

python - _really_ GtkTreeView の検索を無効にする

gtk ツリービューのインタラクティブ検索を本当に無効にするにはどうすればよいですか? ドキュメントには と書かれてset_enable_search(False)いますが、これを行っても+CTRLF迷惑な検索ポップアップを表示します。接続しstart-interactive-searchて戻るTrueことも機能しません。

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

python - GtkIconView のようにリストされた GtkTreeView を描画することは可能ですか?

私はPythonで書かれたGTK +アプリケーションに取り組んでいます。私は明らかにPyGtkを使用しています。私のアプリケーションは、ビデオのコレクションに関するものです。F スポットや Picasa の一種ですが、ビデオ用です。

これら 2 つのアプリでわかるように、タグのサムネイルが下にあるすべての写真を表示できる中央の領域があります。

私のアプリでは、同じ種類のビューを実装したいと考えています。今のところ、これを使用するだけです:

(私の動画のサムネイル)内に とgtk.Tableを含み、タグと同じ数の 内にを含む。VBoxVBoxPixbufHBoxHBoxPixbuf

それは機能していますが、醜く、より良い解決策ではないようです。

ドキュメントを詳しく調べたところ、ニーズに近い 2 つのウィジェットが見つかりました:IconViewTreeView. ただし、IconView「行」ごとに 1 つの pixbuf しか表示できず、TreeView は のようなグリッドとして表示されませんIconView

私の質問: TreeView を IconView (グリッド内) のように表示する方法はありますか? 写真とタグを下に配置する F スポットの方法をどのように実装しますか?