如何使用IUP THEME属性/DEFAULTTHEME全局属性

IUP 3.26引入了THEME属性:

THEME通用属性和DEFAULTTHEME全局属性,适用于所有控件,可同时应用一组属性。

我正在使用IUP 3.28,并按照文档(https://www.tecgraf.puc-rio.br/iup/en/attrib/iup_theme.html)的说明来标准化各种控件的外观;但是,它并不像我所期望的那样工作-实际上似乎根本没有工作。每个控件主题中指定的属性没有被应用,因此显然我有些误解。在这个例子中,按钮应该有粉色的文字,但它没有。

      require "iuplua"
      iup.SetGlobal("DLGBGCOLOR","255 255 255") --默认背景颜色
      iup.SetGlobal("TXTBGCOLOR", "255,255,255") --默认文本颜色

      myButtonTheme = iup.user{alignment="ALEFT:ACENTER", expand = "HORIZONTAL",
        padding = "20x10", fgcolor = "255 0 255"}

      myTheme = iup.user{
        IUPBUTTON = myButtonTheme
      }

      iup.SetGlobal("DEFAULTTHEME", "myTheme") --iup控件的默认设置
      b = iup.button{title = "这应该是粉色的"}
      dlg = iup.dialog{iup.hbox{b}}
      dlg:show()
      iup.MainLoop()
      dlg:destroy()

ETA: 如果我这样创建按钮:b = iup.button{title = "这应该是粉色的", theme = myButtonTheme},它就能工作;但如果我依赖DEFAULTHEME,它就不起作用。我想对创建的一些按钮进行一致的主题设置。

点赞
用户1898478
用户1898478

这里缺少调用语句:

 iup.SetHandle("myTheme", myTheme)

在创建 Lua 控件 myTheme 之后。

2021-06-27 23:15:57