8

我正在尝试使用包含样本 x 和 y 坐标的表创建一个简单的 GUI。我使用树视图,我希望用户可以编辑表格的单元格。是否可以在 cellrenderer 属性中指定单元格是否应直接在 Glade 中可编辑,或者我是否必须在我的代码中指定它?我使用 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 并取消选中我的 cellrenderer 中的“可编辑”框,然后显示一个可切换的“是/否”按钮。然后我的代码如下所示:

#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 小部件中的文本是不可编辑的,您可以通过将“editable”属性的值设置为 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 回答