问题标签 [gobject]
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.
python - DBus Rhythmbox Gobject 设置属性
我在 Python 中遇到了 Gobject Introspection 的问题。我试图通过 DBUS 访问 Rhythmbox,我可以访问 org.mpris.MediaPlayer2.Player 内部的方法,但我试图为 org.mpris.MediaPlayer2.Player 的属性设置值,这对我不起作用。
我可以使用像 player.PlayPause() 这样的方法。当我尝试
我收到一条错误消息:
python - python gtk gobject 切换窗口的可见性
我为隐藏和显示我的窗口编写了全局快捷方式示例,使用像“F12”这样的键,我使用了 python-xlib 和一些名为“pyxhook”的脚本,一切正常,除非我想隐藏()和显示()窗口几次我的过程变成一个僵尸,但相同的代码可以隐藏和显示按钮。
编辑:我使用 Keybinder 库而不是编写纯 python keybinder 解决了我的问题。 http://kaizer.se/wiki/keybinder/
javascript - 在 javascript 中解压 GVariant
我在 GSettings 中有一个存储为 GVariant 类型a(ss)
的数组,我想在 Cinnamon Applet 中使用它。我可以使用以下代码成功检索该值:
但我无法打开它。据我所知,我可能需要使用GVariantIter
结构对其进行解包,但文档有限,而且我在 gjs API 中找不到正确的接口(如果确实存在的话)。有谁知道该怎么做?
谢谢!
编辑: 我的架构如下所示:
目前我正在使用外部JSON
文件来存储设置,但这并不是 100% 令人满意的解决方案。我想我可以维护两个as
-type 变量,并保持它们对齐,但是必须有一种方法可以正确地做到这一点,对吧?
python - Gtk.TreeView 中的 Gtk.Entry (CellRenderer)
我想将 a Gtk.Entry
(已Gtk.EntryCompletion
连接)打包到Gtk.TreeView
. 有谁知道如何做到这一点?(我只需要在表格视图中的文本条目上完成条目。)
我是否可能需要继承Gtk.CellRenderer
orGtk.CellRendererText
并覆盖该start_editing
方法(或类似方法)?我可以找到 subclassing 的示例Gtk.CellRenderer
,但不能修改可编辑的行为。我也找不到该Gtk.CellRendererText
课程的源代码。
我正在使用 Gobject Introspection(即from gi.repository import Gio, Gtk, GLib, Gdk
)。
c - 为什么 G_DEFINE_INTERFACE 会触发“预期的声明说明符”编译器错误?
作为熟悉 GObject 的一部分,我正在尝试按照参考手册中的示例创建一个“Hello, world”界面。这是我所拥有的hello_world_if.h
:
并在hello_world_if.c
:
但这不会编译:
从此处阅读其他答案看来,此“预期的声明说明符”消息通常意味着尚未包含必要的头文件或包含得太晚。但我不确定这里怎么会是这样。(具体来说,向 C 文件添加#include <glib.h>
或#include <glib-object.h>
不会改变任何东西。)
我一定错过了一些简单的东西,但我只是看不到它。帮助?
python - 从 GtkBin 扩展
我正在尝试制作一个类似于 Gtk 在所有类似 TreeView 的小部件上使用的“快速搜索”条目的自定义小部件。
这是我最初想法的简化示例:
问题如下:
- 如果我单独使用它,就像在这个例子中一样,似乎有空间分配给自定义小部件,但
GtkEntry
屏幕上没有显示。我尝试了和自定义小部件(hexpand、vexpand、边距、对齐等)的各种属性组合,GtkEntry
但无济于事。 - 如果与其他小部件结合使用,当我交互式查询小部件分配的高度时,它显然是 1。在屏幕上,小部件实际上不会出现(因为它在其他小部件之间有点“挤压”)。
那么,我在对象初始化或我如何使用这个自定义小部件时缺少一些东西?这是特定于 的问题GtkBin
吗?我尝试用 a 做同样的事情,GtkBox
并且完美无缺,但我认为GtkBin
更适合这个特定的小部件。
c - Glib 信号 - 如何检查实例的处理程序是否已被阻止?
在实例g_signal_handler_block
的处理程序被 阻塞后,除了将状态存储在布尔变量中之外,是否可以检查处理程序是否仍然被阻塞或同时被 g_signal_handler_unblock 解除阻塞?
我希望这样的事情是可能的
但是"g_signal_handler_is_blocked"
函数不存在。g_signal_handler_is_connected
不是使用正确的函数,因为信号处理程序保持连接,因此该函数返回 TRUE。
我试过了g_signal_handler_find ()
,因为有G_SIGNAL_MATCH_UNBLOCKED
一种匹配类型,但它还没有奏效。即使我已经重写了我的代码,我仍然想知道它是否可能,因为我相对经常使用阻塞/解除阻塞。
python - 强制 PyGtk main 重绘
我有这样的 UI 结构:
1x HorizontalBox -> 8x VerticalBox -> 2x Section(GObject) -> 1x RectangleWidget(gtk.DrawingArea)
这只是一个两行 16 个 cairo 矩形的表格。
cairo 矩形部件本身是 gtk.DrawingArea 的子类,并且有一个暴露处理程序。
我现在重写了程序,数据结构和UI现在完全分开了。有一个线程在后台运行,更新数据结构。在 UI的前端gobject.threads_init()
被调用。在 100 毫秒超时后gobject.timeout_add(100, self.update_widget)
,主程序发出一个信号,该信号仅由第一个小部件接收。
这里是暴露处理程序:
注意:
如果我最小化并恢复窗口,小部件会收到 gsignal 并得到更新。
我尝试了不同的方法。包括线程、不同的信令......所有方法都会导致上述相同的行为。
如何强制 gtk.main 返回并重绘其他小部件?
python - Python - Blocked thread at os.listdir
I have a mainloop in my program's main thread (The mainloop is a DBusGMainLoop waiting for a disk I/O event), every time an event handler is called a new thread is dispensed for some file copying. The strange thing happens at this point. Suppose an event is called and thread 1 is started. Thread 1 blocks at the line 'return os.listdir(path)
' until a second event happens and consequently a second thread starts. Then the thread 1 will continue working fine but thread 2 blocks. I've also noticed that if I interrupt the mainloop by Ctrl-C both threads will work but obviously the main thread will stop waiting for events.
Can anyone give any hint for why this happens?
This code runs in my main function:
This is where the event handler starts a new thread:
and this is the method in which the thread seems to block or something:
c - GTK/GObject detail_signal 参数
在 GObject 参考手册中,它表示对于一个函数:
需要格式为“signal-name::detail”的详细信号字符串参数。我对此的初步理解是有预定义的信号详细信息要传入。如果是这种情况,我在哪里可以找到这些的列表?如果不是,那么它到底是什么意思,因为手册并没有把它说得太明显。