如何用Python在Gtk3中显示png图像?

sky*_*tux 4 python user-interface pygobject gtk3

首先,重要的是要提到我正在学习Python和Gtk + 3,所以我不是这些语言的高级程序员.

我正在尝试在Gtk3中创建一个用于创建png图像的Python脚本的图形界面,我想显示它,但是PyGobject文档非常稀缺,我还没有找到办法.到目前为止,我的界面看起来像这样:

在此输入图像描述

按钮和文本条目排列在一个网格中,我希望将大空间(由大按钮表示)清空,直到脚本完成构建图像,然后在该区域显示它.代码在这里.

有没有办法在Gtk3中使用Python?

提前致谢,

德语.

编辑

看一下@gpoo指出的演示,我发现了Frame小部件,我在GUI中实现了它.这是它的样子:

在此输入图像描述

在窗口类中,我将Frame添加到网格中:

self.frame_rgb = Gtk.Frame(label='RGB image')
self.frame_rgb.set_label_align(0.5, 0.5)
self.frame_rgb.set_shadow_type(Gtk.ShadowType.IN)
self.grid.attach_next_to(self.frame_rgb, self.label_img_name,
                         Gtk.PositionType.RIGHT, 3, 8)
Run Code Online (Sandbox Code Playgroud)

我还将Run按钮连接到回调函数,这样当我单击它时,我的脚本会创建然后显示png图像:

self.button_run = Gtk.Button(stock=Gtk.STOCK_EXECUTE)
self.button_run.connect('clicked', self.on_button_run_clicked)
self.grid.attach_next_to(self.button_run, self.entry_b_img,
                         Gtk.PositionType.BOTTOM, 1, 1)
Run Code Online (Sandbox Code Playgroud)

最后,我的回调函数是(没有计算,只是为了测试目的将图像渲染到Frame):

def on_button_run_clicked(self, widget):
    self.img = Gtk.Image.new_from_file('astro-tux.png')
    self.frame_rgb.add(self.img)
Run Code Online (Sandbox Code Playgroud)

但是当我单击"运行"按钮时出现以下错误:

(makeRGB.py:2613):Gtk-WARNING**:尝试将类型为GtkImage的小部件添加到GtkFrame,但作为GtkBin子类,GtkFrame一次只能包含一个小部件; 它已经包含一个GtkImage类型的小部件

任何帮助表示赞赏!

gpo*_*poo 9

你可以使用Gtk.Image.如果生成文件,则可以使用:

img = Gtk.Image.new_from_file('/path/to/my_file.png')
Run Code Online (Sandbox Code Playgroud)

并添加img到容器(GtkGrid在您的情况下).或者,如果您已经在Gtk.Image那里,您可以使用:

img.set_from_file('/path/to/my_file.png')
Run Code Online (Sandbox Code Playgroud)

而不是...from_file你可以使用from_pixbuf,你可以Gdk.Pixbuf从流创建一个.

通常,您可以使用C的文档并将习惯用法更改为Python.此外,您可以检查PyGObject中可用的演示,特别是用于处理图像的演示.