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

问题描述 投票:0回答:1

首先,值得一提的是,我正在学习PythonGtk+ 3,所以我不是这些语言的高级程序员。

我正在尝试在 Gtk3 中为创建 png 图像的 Python 脚本创建一个图形界面,并且我想显示它,但是 PyGobject 文档太少了,我还没有找到方法这样做。到目前为止,我的界面如下所示:

enter image description here

按钮和文本条目排列在网格中,我想保留右侧的大空间(由大按钮表示),直到脚本完成图像构建,然后在该区域中显示它。代码是这里

有没有办法在 Gtk3 中使用 Python 来做到这一点?

提前致谢,

德语。

编辑

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

enter image description here

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

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)

我还将“运行”按钮连接到回调函数,这样当我单击它时,我的脚本会创建并显示 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)

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

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

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

(makeRGB.py:2613): Gtk-警告 **: 尝试添加一个小部件 将 GtkImage 键入 GtkFrame,但作为 GtkBin 子类,GtkFrame 可以 一次仅包含一个小部件;它已经包含一个小部件 输入 GtkImage

如有任何帮助,我们将不胜感激!

python user-interface gtk3 pygobject
1个回答
13
投票

您可以使用Gtk.Image。 如果生成文件,您可以使用:

img = Gtk.Image.new_from_file('/path/to/my_file.png')

并将

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

img.set_from_file('/path/to/my_file.png')

您可以使用

...from_file
代替
from_pixbuf
,并且可以从流创建
Gdk.Pixbuf

一般来说,您可以使用C的文档并将习惯用法更改为Python。 此外,您还可以查看 PyGObject 中可用的 演示 ,特别是 用于处理图像的演示

© www.soinside.com 2019 - 2024. All rights reserved.