问题标签 [pygobject]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3843 浏览

python - Python。使用 Gtk GUI 在后台做一些工作

  • 蟒蛇3.2.2
  • gtk3 3.2.2
  • python-gobject 3.0.2

我正在尝试显示一个 GUI 并在后台做一些工作。据我了解,它应该看起来像这样:

但它不起作用。当您按下按钮时会发生几个循环。并且在窗口关闭后循环运行。但不能在一起。

我做错了什么?

0 投票
3 回答
2154 浏览

path - 在没有root权限的情况下安装pygobject

我正在尝试在没有 root 权限的情况下安装 pygobject-2.11.3。我下载了源代码,并且在运行 ./configure --prefix=/home/my_username/local 时得到:

检查 GLIB - 版本 >= 2.8.0... 否 * 无法运行 GLIB 测试程序,检查原因... 测试程序无法编译或链接。有关发生的 * * 确切错误,请参阅文件 config.log 。这通常意味着 GLIB 安装不正确。配置:错误:也许你想要 pygobject-2-4 分支?

所以我以同样的方式安装了 glib-2.8.6 (./configure --prefix=/home/my_username/local && make && make install) glib 没有错误消息。

尝试重新安装 pyobject 后,我​​得到了同样的错误。

在查看日志时,我看到:glib.h:没有这样的文件或目录

因此,pyobject 的 ./configure 脚本似乎没有找到 /home/my_username/local/include 中的 glib.h

/home/my_username/local 是我的 $PATH 的第一个元素

uname -a : Linux u205 2.6.9-42.ELsmp #1 SMP Wed Jul 12 23:32:02 EDT 2006 x86_64 x86_64 x86_64 GNU/Linux

谢谢你的帮助

0 投票
1 回答
1240 浏览

python - Python GUI 兼容 GTK2 和 GTK3

我想用 GTK+ 在 python2 中创建一个图形界面。

现在我正在使用 gobject-introspection 来使用 GTK3,但如果可能的话,我也希望与 GTK2 兼容。

我在我的窗口中使用了一个网格,但它似乎Gtk.Grid在 GTK2 中不存在。另一方面Gtk.Table存在于两个版本中。

是否值得尝试让应用程序兼容这两个版本的 GTK(以及如何?)或者我将不得不编写几乎两倍以上的代码?

谢谢

0 投票
1 回答
6130 浏览

python - Python GTK+ 画布

我目前正在通过 PyGobject 学习 GTK+,需要像画布这样的东西。我已经搜索了文档并找到了两个似乎可以完成这项工作的小部件:GtkDrawingArea 和 GtkLayout。我需要一些基本函数,如 fillrect 或 drawline ...事实上,这些函数可以从 c 中获得,但我找不到如何从 python 中使用它们的说明。你能推荐一个处理他们的 python 等价物的教程或手册页吗?

如果您对如何获得类似于画布的东西有更好的了解,我们将不胜感激。我仍在学习,只要它可以嵌入到我的 Gtk 应用程序中,我就会满足于任何解决方案。

0 投票
4 回答
2160 浏览

python - 从内存地址创建 python 对象(使用 gi.repository)

有时我需要调用一个只存在于 C 中的 gtk/gobject 函数,但返回一个具有 python 包装器的对象。以前我使用了一个基于 ctypes 的解决方案,效果很好:

http://faq.pygtk.org/index.py?req=show&file=faq23.041.htp

现在我从 PyGtk(“import gtk”)切换到 GObject-introspection(“from gi.repository import Gtk”),我可以用什么来代替?

0 投票
2 回答
2159 浏览

python - 带有 pygobject 的 pango 属性

我有以下代码,它使用 pygtk:

我正在尝试将其移植到 pygobject,但没有类 Pango.AttrFamily、Pango.AttrWeight 和 Pango.AttrForeground(我无法实例化 Pango.AttrSize)。

问题是:如何使用pango_attr_size_new, pango_attr_weight_new,pango_attr_family_newpango_attr_foreground_new通过自省?

我知道我可以使用标记来做到这一点,但是 1. 使用属性会使事情变得更简单 2. 我想知道这里发生了什么!我已经花了很多时间试图解决它。

0 投票
2 回答
2371 浏览

python - Gtk+ 3 - 在 TextView 中写入和自动滚动的问题

我有一个Gtk.ScrolledWindow()with inside a Gtk.TextView(),(我正在使用 PyGObject 内省)。

在我从另一个线程插入一些文本并自动滚动后,连续多次调用该方法append_text后,我收到了几个警告,然后 GUI 崩溃了。

这是我的代码中麻烦的部分:

有谁知道我做错了什么?

--
以下是我得到的一些错误:

Gtk-WARNING **:无效的文本缓冲区迭代器:迭代器未初始化,或者缓冲区中的字符/pixbufs/小部件自迭代器创建以来已被修改。您必须使用标记、字符编号或行号来跨缓冲区修改保留位置。您可以在不使迭代器失效的情况下应用标签和插入标记,但是任何影响“可索引”缓冲区内容(可以通过字符偏移量引用的内容)的突变都会使所有未完成的迭代器失效

Pango-CRITICAL **:pango_layout_index_to_pos:断言“布局!= NULL”失败

Gtk-WARNING **: gtktextview.c:4813: 自上次验证屏幕上的行以来,不知何故修改了一些文本行或发生了滚动 - 可能是文本小部件错误。

Gtk:ERROR:gtktextview.c:4814:gtk_text_view_paint:代码不应到达

0 投票
2 回答
3501 浏览

python - 将 Gtk.DrawingArea 或 Cairo 模式的内容保存到磁盘上的图像

我有一个使用Cairo 图像表面的小型 PyGI 项目,然后我使用表面图案对其进行缩放并在 Gtk.DrawingArea 上进行渲染。

我想将缩放版本写入 PNG 文件。我尝试使用Surface.write_to_png()从原始表面写入,但它只写入原始(即非缩放)大小,所以我被困在那里。

然后我想我也许可以从 Gtk.DrawingArea 获取渲染图像并将其写入磁盘,但我还没有找到如何在 PyGI 中做到这一点(这似乎只有在 GTK+ 2 中才有可能 -将 gtk.DrawingArea 保存到文件)。所以我试图弄清楚如何将我的缩放图像写入磁盘。

下面是创建表面、放大和渲染表面的代码:

这是将表面写入PNG文件的代码:

所以写表面会创建一个不缩放的图像,并且在 cairo.SurfacePattern 中也没有 write 方法。

我最后的手段是获取在 gtk.DrawingArea 中呈现的缩放图像,将其放入 GtkPixbuf.Pixbuf 或新表面,然后将其写入磁盘。pixbuf 方法似乎适用于 GTK+ 2,但不适用于 GTK+ 3。

那么有谁知道我如何将缩放后的图像写入磁盘?

0 投票
2 回答
1311 浏览

python - 在 PyGObject/GTK+3 中格式化旋转按钮的显示

我正在将应用程序从 PyGTK 移植到 PyGObject。大多数情况下它进展顺利,因为大多数情况下我用 PyGTK 做了常规的事情。但是我使用了一个有点丑陋的技巧来将 SpinButton 的值显示为货币(前面有一个 $)。

在 Stack Overflow 前几天,我最初从PyGTK 邮件列表中获得了这个解决方案。如您所见,魔术发生在输入和输出信号上:

尽我所能将其翻译成 PyGObject,我想出了:

不幸的是,这不起作用。它最初显示得很好,但是当我单击向上或向下错误时,它崩溃了,我看到:

知道这个错误消息是什么意思吗?

或者我的代码的哪一部分在 PyGObject 下可能不起作用?

或者,更好的是,如何解决这个错误?

或者,更好的是,一个更直接的解决方案来解决我原来的问题(在 SpinButton 内容前显示一个 $)?

0 投票
3 回答
4161 浏览

python - 如何提升一个被 PyGObject 最小化或覆盖的窗口?

我一直在使用PyGTK FAQ中提供的答案,但这似乎不适用于 PyGObject。为方便起见,这里有一个适用于 PyGTK 的测试用例,然后是一个不适用于 PyGObject 的翻译版本。

PyGTK 版本:

PyGObject 版本:

当我单击 PyGObject 版本中的按钮时,没有弹出另一个窗口,并且出现此错误:

所以我想一定有其他方法可以在 PyGObject 中获取 Gdk.window 吗?

还是有一些不同/更好的方式来实现相同的目标?

有任何想法吗?