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

时间:2016-07-18 01:34:23

标签: python python-3.x gtk3 glade

我尝试使用gtkme (1.3.5) library开发一个简单的GTK应用程序,但我在Glade (3.20.0-1)中使用GtkScale对象时遇到问题。我创建了其中一个,它在.glade文件中默认定义为:

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

然而,它出现在Glade和我的应用程序中的方式使它无法使用,即使在弄乱了所有可用设置之后:

Not working GTK Scales object

我希望在pavucontrol中看到类似音量条的内容:

Pavucontrol scales object

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

1 个答案:

答案 0 :(得分:2)

要获得完全正常工作Scale,您需要定义两个元素:A Gtk.Adjustment(执行数学工作并定义限制)和Gtk.Scale显示元素Scale。如果没有Adjustment,则Scale会在图片中显示。

因此,在Glade中,您需要定义这两个元素。除了实际窗口小部件树中的元素外,Adjustment将显示为不可见元素(参见下文)。 Scale最初会以您看到的方式显示,并且必须连接到Adjustment才能真正显示内容。 AdjustmentScale位于Glade中不同的“小部件”中,这可能并不明显:

enter image description here

它将出现在小部件树中,如下所示:enter image description here

Scale的属性中,您可以选择要分配给它的Adjustment。当然,您也可以在运行时执行此操作。 “手动”生成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)

您可以在Adjustment中定义Glade(或稍后添加)Scale窗口小部件也是如此(尽管在Glade中执行此操作更合乎逻辑反正。

添加了参考文献: