8

サンプルの x 座標と y 座標を含むテーブルを使用して単純な GUI を作成しようとしています。私はツリービューを使用しており、テーブルのセルをユーザーが編集できるようにしたいと考えています。Glade の cellrenderer プロパティでセルを直接編集可能にするかどうかを指定することは可能ですか?それともコードで指定する必要がありますか? Glade 3.6.1 を使用しています

ツリー ビューを編集するときにツリー ビュー エディタで [編集可能] ボックスのチェックを外すと、セルを編集可能にするかどうかを指定できることがわかりました。モデル。しかし、プログラムを実行すると、セルは編集可能ですが、中に書いた値は消えてしまいます。どうすれば修正できますか?入力した値がセルに保存されないのはなぜですか?

ヒントをありがとう

4

3 に答える 3

5

同様の問題を扱っている人のために、私はそれを解決しました-セルが編集されるたびに、モデル内の適切なレコードを変更する必要があります.Pythonのコード例:

cell.connect("edited", self.text_edited, model, column)

def text_edited( self, w, row, new_text, model, column)
  model[row][column] = new_text
于 2010-07-02T09:48:47.883 に答える
0

少し違うことをしなければならないことがわかりましたが、Ubuntu の Quickly 開発環境も使用しています。Glade に移動して、セルレンダラーの [編集可能] ボックスのチェックを外す必要がありました。これにより、切り替え可能な [はい/いいえ] ボタンが表示されました。次に、私のコードは次のようになります。

#psuedo-code function definition
cellcolumn_widget.connect("edited", self.function, list_or_treestore, columnnumber)

#actual code, editing second column so column is passed as 1
self.builder.get_object("cellrenderer_chapter").connect("edited", self.cell_edited, self.builder.get_object("liststore_chapters"),1)

def cell_edited(self, widget, row, new_text, model, column):
    model.set_value(model.get_iter(row),column,new_text)
于 2012-10-21T20:35:08.800 に答える
0

Python GTK の場合、デフォルトでは、Gtk.CellRendererText ウィジェットのテキストは編集できません。これは、「編集可能」プロパティの値を True に設定することで変更できます。

renderer = Gtk.CellRendererText();
renderer.set_property("editable", True);

次に、「編集済み」シグナルに接続し、それに応じて Gtk.TreeModel および/またはデータベースを更新できます。

renderer.connect("edited", self.entry_edited);

def entry_edited(self, widget, path, text):
    self.listStore[path][number_of_row] = text;  # put the number_of_row to be edited

詳細については、このチュートリアルを確認してくださいpython gtk 3 チュートリアル - CellRendererText

于 2021-02-12T21:03:44.010 に答える