如何动态调整树视图中pixbuf cellrenderer的大小?
我正在使用与上面类似的Gtk3 TreeView。该模型是一种Gtk.TreeStore
- Gtk.TreeStore(STR,GdkPixbuf.Pixbuf)
对于我可以通过添加到模型的正确大小的图像的图片:
- pixbuf.scale_simple(48,48,GdkPixbuf.InterpType.BILINEAR)
但是我还使用该模型的其他地方示出了在不同的曼pixbufs呃和pixbufs也可以是各种尺寸。
我想要做的是强制运行时显示图片的大小。问题是 - 我该怎么做?
我试图迫使GtkCellRendererPixbuf为固定尺寸,但是这只是显示正确的尺寸的图像 - 但仅对应于固定大小
pixbuf = Gtk.CellRendererPixbuf()
pixbuf.set_fixed_size(48,48)
所述图像的所述部分我想使用set_cell_data_func
的在TreeViewColumn的:
col = Gtk.TreeViewColumn('', pixbuf, pixbuf=1)
col.set_cell_data_func(pixbuf, self._pixbuf_func, None)
def _pixbuf_func(self, col, cell, tree_model, tree_iter, data):
cell.props.pixbuf = cell.props.pixbuf.scale_simple(48,48,GdkPixbuf.InterpType.BILINEAR)
这确实做在运行时,图像的动态调整 - 但在终端,我得到数百个错误,比如这个:
sys:1: RuntimeWarning: Expecting to marshal a borrowed reference for <Pixbuf object at 0x80acbe0 (GdkPixbuf at 0x87926d0)>, but nothing in Python is holding a reference to this object. See: https://bugzilla.gnome.org/show_bug.cgi?id=687522
我也尝试了通过调整treemodel pixbuf而不是cell.props.pixbuf
的方法来改变大小,但这也给出了与上面相同的错误。
cell.props.pixbuf = tree_model.get_value(tree_iter,1).scale_simple(48,48,GdkPixbuf.InterpType.BILINEAR)
所以显然这不是这样做的正确方法 - 所以任何想法如何办法呢?任何链接到示例代码基于Gtk3的C++/Python将是最受欢迎的。
我使用GTK + 3.6/2.7蟒