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

标签 python python-3.x gtk3 glade

我正在尝试使用 gtkme (1.3.5) library 开发一个简单的 GTK 应用程序我在使用 GtkScale 时遇到问题Glade (3.20.0-1) 中的对象。我创建了其中之一,它在 .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>不会改变任何东西。

最佳答案

要获得完全工作的Scale,您需要定义两个元素:Gtk.Adjustment(执行数学工作并定义限制)和 Gtk.Scale 显示 Scale 上的元素。如果没有调整比例将显示为图像中的样子。

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

enter image description here

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

比例的属性中,您可以选择要分配给它的调整。当然,您也可以在运行时执行此操作。 “手动”创建工作 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 小部件也是如此(尽管它更符合逻辑)无论如何,在 Glade 中做到这一点。

添加引用:

关于python - 在 Glade 中创建可修改的 GtkScale 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38427503/

相关文章:

python - 在 pandas 数据帧和 dask 数据帧中将一列整数格式化为指定长度字符串的矢量化方法

python - 在Python列表理解的if子句中进行多次逻辑比较的最佳方法?

python - Django 如何在 Amazon S3 中存储 HTML 文件

python - python 将列表中的元素排序为3个单独的列表

GTK+ 中的 CSS 样式

python - PyGtk3,单击按钮时捕获单击事件

python - 如何使用keras实现LSTM中多元回归的输入?

python - Numpy 数组多维索引与列表 IndexError : shape mismatch

Python 多处理日志错误 - TypeError : an integer is required (got type NoneType)

Python GTK3 : how to create a Gtk. 文件选择对话框?