【问题标题】:Connecting to a signal of a widget, button::press连接到小部件的信号,button::press
【发布时间】:2020-03-29 23:45:05
【问题描述】:

我想创建一个简单的小部件,它是一个进度条,当我们用鼠标左键单击它时,它的值设置为 1。

   local myFirstWidget = wibox.widget {
        {
            value = 0.5,
            color = "#ff0000",
            widget = wibox.widget.progressbar,
            width = 100,
            forced_height = 20,
            shape = gears.shape.rounded_bar,
            border_width = 2,
            border_color = beautiful.border_color,
            ticks = true,
            clip = true,
            margins = {top = 5, bottom = 5},
            paddings = 2
        },
        layout = wibox.layout.fixed.horizontal
    }

    myFirstWidget:connect_signal("button::press",
                                 function(w, _, _, btn) w.value = 1 end)

当我按下栏时 - 什么都没有发生。如果我使用

w.set_value(1)

然后点击栏显示错误

尝试调用一个零值(字段'set_value')

如何让它发挥作用?

【问题讨论】:

  • 不确定但可能是w:set_value
  • 尝试一下,我想通了,检查我对问题的回答@macroland

标签: lua awesome-wm


【解决方案1】:

原来w 是包含进度条小部件的“父”小部件。所以我不得不这样做

myFirstWidget:connect_signal("button::press", function(w)
    local children = w:get_all_children()
    children[1].value = 1;
end)

所以基本上我检索所有子小部件的表,然后使用 [1] 来引用表中的第一个小部件,然后我为其属性分配一个值

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-18
    相关资源
    最近更新 更多