3

GtkTreeRowReference()成功せずにGtk3 の関数を呼び出そうとしています。ListStore関連する TreeView の選択セットを MULTIPLE モードに設定して、複数のレコードを削除しようとしています。TreeRowReference選択で指定されたアイテムごとに保存し、ListStoreそれらを使用してアイテムを削除したいListStoreのは、選択で以前に到達したListStoreアイテムが削除されると、これらのパスが更新されるはずだからです。私はTreeRowReferencesPyGtk 2 での使用に関する多くの参照を見つけました。PyGObject のチュートリアルはそれらの使用について言及していますが、実際の例は示していません。私はGtkTreeRowReference()成功せずに呼び出すために多くの方法を試しました。例えば:

hit_rows = []
for row in range(len(self.selection.get_selected_rows()):
    hit = self.selection.get_selected_rows()[row]
    hit_row = Gtk.TreeRowReference(liststore, hit)
    hit_rows.append(hit_row)

この致命的なエラー メッセージが生成されます:"TypeError: function takes at most 0 arguments (2 given)"プログラムが行にヒットしたときGtk.TreeRowReference。選択行には既に への参照が含まれているListStoreため、選択行のみを引数として再試行しましたが、関数がまだ 0 引数を主張していて、1 引数を渡そうとしたという苦情がありました。

私も次のようなことを試しました:

hit_rows = []
for row in range(len(self.selection.get_selected_rows())):
    hit = self.selection.get_selected_rows()[row]
    hit_row = hit.GtkTreeRowReference()
    hit_rows.append(hit_row)

"AttributeError: 'ListStore' object has no attribute 'GtkTreeRowReference'."これらの努力により、Pythonは呼び出しを Varying に変更することについて不平を言うようTreeRowReferenceになり、 Gtk_TreeRowReference他のいくつかのバリエーションでも同じエラー メッセージが生成されました。

Gtk.TreeRowReferencePyGObject/Gtk3 での使用方法について手がかりを教えてもらえますか? 比較的新しく経験の浅い Python プログラマーであり、Gtk も初めて使用するので、息を呑むほど明白な何かを見落としていることは間違いありませんが、インターネットで何度も検索した後でも困惑しています。

4

1 に答える 1

2

今すぐ呼び出す代わりにGtk.TreeRowReference(PyGObject + GTK + 3)、を使用する必要がありますGtk.TreeRowReference.new。たとえば、次を使用できます。

selection = treeview.get_selection()
model, paths = selection.get_selected_rows()
refs = []
for path in paths:
    refs.append(Gtk.TreeRowReference.new(model, path))

つまり、treeview以前に定義されています。次に、次のようにして後で再確認できます。

for ref in refs:
    path = ref.get_path()
    iter = model.get_iter(path)
    value = model.get(iter, 0)[0]
    print '(%s, %s)' % (path, value)

最後の部分では、モデルの最初の列の値を取得したいとします。

于 2012-09-23T01:32:46.507 に答える