javascript - 格式化 Gtk.SpinButton 的输出不适用于单击鼠标
问题描述
我正在尝试格式化Gtk.SpinButton
GJS 中的输出。现在的目标是简单地将字符串“前缀”添加到 SpinButton 的文本中。
这是一个准系统实现:
#!/usr/bin/gjs
imports.gi.versions.Gtk = "3.0";
const { Gtk } = imports.gi;
Gtk.init(null);
let window = new Gtk.Window();
let adjustment = Gtk.Adjustment.new(0, 0, 10, 1, 0, 0);
let spinButton = new Gtk.SpinButton();
spinButton.adjustment = adjustment;
spinButton.wrap = true;
spinButton.width_chars = 10;
window.add(spinButton);
spinButton.connect('output', formatOutput);
spinButton.connect('value-changed', reportChange);
function formatOutput(button) {
let prefixed = `prefix${button.adjustment.value}`;
button.set_text(prefixed);
return true;
}
function reportChange(button) {
log(`value changed ${button.value}`);
}
window.show_all();
window.connect('destroy', Gtk.main_quit);
Gtk.main();
正如文档所建议的,我利用了Gtk.SpinButton
'soutput
信号。
当我:
Gtk.SpinButton
用鼠标滚轮滚动- 用鼠标左键单击并按住
Gtk.SpinButton
-/+ 按钮
但是,单击 -/+ 按钮不会改变超过两个增量的值(例如,如果初始值为 0 和step-size
1,则单击增量只会达到 1(或其他方向的 -1)并停在那里) .
此外,似乎无论何时output
连接信号(即使它只是返回true
),单击都会触发value-changed
信号两次:SpinButton 的值首先设置为零,然后递增。结果是,对于单击, 的值Gtk.SpinButton
停留在值0+increment
or 0-increment
。我不知道如何解释这种行为..有什么想法吗?谢谢
解决方案
看来我们还需要连接到 Gtk.SpinButton 的输入信号(https://gjs-docs.gnome.org/gtk30~3.24.18/gtk.spinbutton#signal-input),我们无法处理,因为它有一个GPointer 作为它的参数之一。最终,我想使用 Gtk.SpinButton 来选择一天中的时间,但 GJS 似乎不可能。至少现在。
推荐阅读
- css - 为什么将谓词应用于 xpath 中的字符串是有效的?
- xml - 如何将 xs:occurs 属性组添加到我的元素声明中?
- jquery - SharePoint 2013 - GridView 上的 jQuery
- .net - .NET ASMX WebService 和客户端调用的外部类
- cumulocity - 在 cumulocity 托管的自定义应用程序中存储托管对象的位置
- windows - 适用于 Windows 10 的 Thingworx 客户端
- python - CVXPY 错误:“NotImplementedError:不允许严格不等式”
- excel - 将文本从 Excel 粘贴到 Word 在特定位置 VBA
- reactjs - 如何从控制台中删除警告?
- java - 对象如何存储在 HashMap 中?