在 Glade 中创建可修改的 GtkScale 对象

Creating modifiable GtkScale object in Glade

我正在尝试使用 gtkme (1.3.5) library and I'm having trouble using GtkScale object in Glade (3.20.0-1) 开发一个简单的 GTK 应用程序。我创建了其中一个,它在 .glade 文件中默认定义为:

<object class="GtkScale">
    <property name="visible">True</property>
    <property name="can_focus">True</property>
    <property name="round_digits">1</property>
</object>

然而它在 Glade 和我的应用程序中的显示方式使其无法使用,即使在乱用所有可用设置之后也是如此:

我希望在 pavucontrol 中看到类似音量条的东西:

在弄乱了 this thread 的代码后,我了解到将对象更改为 <widget class="GtkHScale" id="hscale1"> 或添加 <property name="update_policy">GTK_UPDATE_CONTINUOUS</property> 不会改变任何东西。

要获得完整的工作 Scale,您需要定义两个元素:一个 Gtk.Adjustment(它执行数学运算并定义限制)和一个 Gtk.Scale,它显示该元素在 Scale 上。没有 AdjustmentScale 显示为您的图片。

因此,在 Glade 中,您需要定义这两个元素。 Adjustment 将显示为不可见元素(见下文),与实际小部件树中的元素不同。 Scale 最初会如您所见显示,并且必须连接到 Adjustment 才能实际显示某些内容。 AdjustmentScaleGlade 中是不同的 'widget sections',这可能不是很明显:

它会像这样出现在小部件树中:

Scale的属性中,您可以select您想要分配给它的Adjustment。当然,您也可以在 运行 时间执行此操作。 'manually' 使工作 Scale 的代码是这样的(即没有 Glade,但直接在你的 Python 代码中):

    adj = Gtk.Adjustment(100.0, 0.0, 150.0, 2.0, 10.0, 10.0)
    scale = Gtk.Scale()
    scale.set_orientation(Gtk.Orientation.HORIZONTAL)
    scale.set_adjustment(adj)

您可以在 Glade 中定义 Adjustment(或稍后添加),Scale 小部件也是如此(尽管在 [=17 中这样做更合乎逻辑=] 无论如何。

添加参考: