菜单(menu)

功能

自定义界面菜单,用于切换页面,执行页面内特殊动作

  • 菜单只能分布在页面的最下方,通过数控系统的软按键操作,实现横排软按键的功能定义。
  • 有些菜单的功能是独立的,有些菜单要和相应的控件配合使用。

参数

  • 菜单名称: 此参数类型为字符串。可以用|表示换行提示,当一行显示不下时,在此换行
  • action: 控件动作,支持所有的控件动作
  • enable: 使能表达式,当该表达式值不为0时,菜单才显示深色(可以响应按键),否则显示灰色(不响应按键),不设置enable则无影响,此参数为字符串类型,写作enable="#100",则只有当#100不等于0时才可以操作。当action为 页面跳转页面选择时,enable表达式为0此菜单不显示。
  • visible: 可见表达式,当该表达式值不为0时,菜单才显示,否则不显示,此参数为字符串类型,写作visible="#100",则只有当#100不等于0时才可以显示。

示例

    menu("页面跳转", 页面跳转("page1")) # 跳转到id为"page1"的页面
    menu("示教绝对", 示教绝对)  # 示教绝对坐标
    menu("生成程序", 生成程序('''G00 X100''', is_file=False, number="10"))  # 生成一个程序名为10.PRG的程序
    menu("位置界面", 进入NC("pos"))   # 进入nc位置界面
    menu("信号脉冲", 信号脉冲("F19000.0"))  # 发送F19000.0信号脉冲
    menu("工艺保存", 工艺保存)  # 将工艺数据保存至系统内部

控件动作

特殊菜单

根菜单

menu的一个特殊用法是定义一个根菜单。每一个自定义界面都由一个根菜单进入,需要定义一个根菜单。根菜单动作支持"页面跳转"和"页面选择"两种,不支持enable参数,且支持只写菜单名称一个参数,此时根菜单会自动捕捉第一个页面的id,按下根菜单 页面跳转到该页面。

定义在 with page():作用域之外的menu是根菜单。

V7软件推荐使用set_default_page(“xxxx”)函数取代根菜单

建议将根菜单定义在所有页面定义之前
根菜单支持“运行脚本” (v3.3新增) 根菜单等效于set_default_page(“xxxx”) (v5.3新增)

占位符菜单

为了排版方便,加入一种"占位符菜单",这种菜单没有名称,不响应按键,表现为一个空菜单。
写作 place_holder(n),n为正整数,定义n个连续的占位符菜单,n可以省略,默认值为1。 (V2.5新增)

将此函数和menu菜单函数放在一起使用,调用的先后顺序,决定了菜单的位置。

with page(9, 4, id="holder", text=(绿色, f32x16, 居中)):
    msg_label((1, 1, 2, 4), 左对齐, 紫色, count=3)

    place_holder(2)       #定义两个连续的占位符菜单
    menu("led", "led")     
    place_holder(3)       #定义三个连续的占位符菜单
    menu("AA", "AA")

弹簧菜单

为了排版方便,加入一种"弹簧菜单",这种菜单没有名称,不响应按键,表现为若干个空菜单。
写作 spring() (V2.5新增)
将此函数和menu菜单函数放在一起使用,调用的先后顺序,决定了菜单的位置。使用弹簧菜单的页面,菜单个数(包括占位符菜单、弹簧菜单)不能超过8个 。1个弹簧菜单表示1个空菜单
个数原理: 弹簧在所有菜单之前,则所有菜单右对齐;菜单两边各有一个弹簧,则菜单居中对齐;一页中有多个弹簧菜单,则弹簧菜单均分页面中的空菜单,如果有余数,则将余数分给第一个弹簧菜单。
例:以8+2系统为例,系统共有8个菜单,其中有3个menu,8-3=5,5/3=1,5%3=2;所以第一个spring菜单表现为3个空菜单,后面两个spring菜单表现为1个空菜单。

with page(9, 4, id="holder", text=(绿色, f32x16, 居中)):
    msg_label((1, 1, 2, 4), 左对齐, 紫色, count=3)

    spring()
    menu("led", "led")     
    spring()
    menu("AA", "AA")
    menu("BB", "BB")
    spring()
占位菜单效果显示 弹簧菜单效果展示
place_holder举例 spring举例

菜单翻页

为了排版方便,加入一种菜单翻页,这种菜单没有名称,输入此函数后,该函数后的第一个菜单为下一页的第一项。当需要菜单翻页可以写作pagebreak()(V3.1新增)
当没有制定pagebreak时弹簧菜单仅在最后一页伸缩,否则依次绘制实际菜单。若想在特定处伸缩请使用pagebreak指定该菜单为页结尾

  • 举例1:
    menu("设置PA5", action=运行脚本('''#["PA5-4"]=50'''))
    menu("信号翻转", action=信号翻转("k1.1"), enable='#500+2')
    menu("加输入", action=加输入, enable='#500+2')
    pagebreak()                 #若为8+2补足5个,若为10+2补足7个
    menu("赋值", 表达式("D207=2+D20*2+1"), enable="#100")  #第二行的第一个
  • 举例2:如果想菜单至于最右侧,可以结合spring和pagebreak()
    menu("设置PA5", action=运行脚本('''#["PA5-4"]=50'''))
    menu("信号翻转", action=信号翻转("k1.1"), enable='#500+2')
    spring()          
    menu("加输入", action=加输入, enable='#500+2')       #若为8+2位于第8个,若为10+2位于第10个
    pagebreak()                 
    menu("赋值", 表达式("D207=2+D20*2+1"), enable="#100")  #第二行的第一个