Intel® Quartus® Prime Standard Edition用户指南: 调试工具

ID 683552
日期 9/24/2018
Public
文档目录

2.9.6.2. Toolkit API脚本实例

使Toolkit在System Console中可见

使用toolkit_set_property命令来修改根工具包的visible属性。如果将一个属性应用于整个工具包,那么请使用self一词。在其他情况下,请使用all来引用根工具包。

toolkit_set_property self visible true

添加小部件

使用toolkit_add命令添加小部件。

toolkit_add my_button button all

以下命令将一个标签小部件my_label添加到根工具包。在GUI中,标签显示为Widget Label

set name "my_label"
set content "Widget Label"
toolkit_add $name label all
toolkit_set_property $name text $content

在GUI中,显示的文本更改为新值。再添加一个标签:

toolkit_add my_label_2 label all
toolkit_set_property my_label_2 text "Another label"

新标签显示在第一个标签的右侧。

请使用以下命令将新标签放置在第一个标签下:

toolkit_set_property self itemsPerRow 1

收集输入(Gathering Input)

要将用户输入合并到您的Toolkit API中,

  1. 使用以下命令创建一个文本域:
    set name "my_text_field"
    set widget_type "textField"
    set parent "all"
    toolkit_add $name $widget_type $parent
  2. 小部件尺寸非常小。要使小部件填充水平空间,请使用以下命令:
    toolkit_set_property my_text_field expandableX true
  3. 现在,文本域完全可见。单击后,您可以在域中键入文本。要检索该域的内容,请使用以下命令:
    set content [toolkit_get_property my_text_field text] puts $ content

此命令将内容打印到控制台中。

根据用户事件更新小部件

使用回调时,Toolkit API也可以执行操作,而无需交互式输入:

  1. 首先定义一个使用文本域内容更新第一个标签的程序:
    proc update_my_label_with_my_text_field{
        set content [toolkit_get_property my_text_field text]
        toolkit_set_property my_label text $content
    }
  2. 在Tcl Console中运行update_my_label_with_my_text_field命令。第一个标签现在与文本域内容匹配。
  3. 每当文本域更改时,需使用update_my_label_with_my_text_field命令:
    toolkit_set_property my_text_field onChange update_my_label_with_my_text_field

    每次文本域更改时,Toolkit都会执行onChange属性。该属性的执行将更改第一个域以匹配您键入的内容。

按钮

使用按钮来触发操作。

  1. 创建一个按钮,此按钮更改第二个标签:
    proc append_to_my_label_2 {suffix} {
    						set old_text [toolkit_get_property my_label_2 text]
    						set new_text "${old_text}${suffix}"
    						toolkit_set_property my_label_2 text $new_text
    						}
    						set text_to_append ", and more"
    						toolkit_add my_button button all
    						toolkit_set_property my_button onClick [append_to_my_label_2 $text_to_append]
  2. 单击按钮将一些文本附加到第二个标签上。

组(Groups)

属性itemsPerRow表示组中小部件的布局。对于更复杂的布局,其中每行小部件数量不同,请使用嵌套组。要添加一个新租,其中每行有更多的小部件,请执行以下命令:

toolkit_add my_inner_group group all
toolkit_set_property my_inner_group itemsPerRow 2
toolkit_add inner_button_1 button my_inner_group
toolkit_add inner_button_2 button my_inner_group

这些命令创建一个带有两个按钮组的行。要使嵌套组更加无缝(seamless),请使用以下命令删除带有组名的边框:

toolkit_set_property my_inner_group title ""

您可以将title属性设置为任何其他字符串,以确保显示边框和标题文本。

选项卡(Tabs)

使用选项卡来管理小部件可见性:

toolkit_add my_tabs tabbedGroup all
toolkit_set_property my_tabs expandableX true
toolkit_add my_tab_1 group my_tabs
toolkit_add my_tab_2 group my_tabs
toolkit_add tabbed_label_1 label my_tab_1
toolkit_add tabbed_label_2 label my_tab_2
toolkit_set_property tabbed_label_1 text "in the first tab"
toolkit_set_property tabbed_label_2 text "in the second tab"

这些命令添加了一组两个选项卡,每个选项卡都有一个包含标签的组。单击选项卡更改显示的组/标签。