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

标签 python user-interface gtk3 pygobject

首先,需要说明的是,我正在学习 PythonGtk+ 3,所以我不是这些语言的高级程序员。

我正在尝试在 Gtk3 中为创建 png 图像的 Python 脚本创建一个图形界面,我想显示它,但是 PyGobject文档是如此稀缺,以至于我还没有找到一种方法来做到这一点。到目前为止,我的界面如下所示:

enter image description here

按钮和文本条目排列在一个网格中,我想将右侧的大空间(由大按钮表示)留空,直到脚本完成构建图像,然后在该区域显示它.密码是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-WARNING **: Attempting to add a widget with type GtkImage to a GtkFrame, but as a GtkBin subclass a GtkFrame can only contain one widget at a time; it already contains a widget of type GtkImage

感谢任何帮助!

最佳答案

您可以使用 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_pixbuf 代替 ...from_file,并且可以从流创建 Gdk.Pixbuf

一般来说,您可以使用 documentation for C并将习语更改为 Python。另外,您可以检查 demos available in PyGObject ,特别是 demo for handling images .

关于python - 如何使用 Python 在 Gtk3 中显示 png 图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15440088/

相关文章:

android - Android 中的可滚动/可缩放 View

关于使用 JPanels 的 Java 简单问题

C# Propertygrid 属性可为空

python - 交替开关开/关?

c - 如何让 GTK 识别我创建的模板?

php - 如何从需要在 PHP 页面上以 root 身份运行的 Python 脚本返回输出?

python - 使用 RTLD_NOW 的 dlopen 导致崩溃

python - 从3个不同的文件中读取数据,并使用一个数据在所有文件中搜索另一个数据

python - 如何制作BeautifulSoup "understand"plus html实体

python - 如何在 Ubuntu 上的 GTK3 (GI) 和 Python 3 中获取剪贴板内容