📄 scripting_6_1__arguments_to_the_script.html
字号:
<html><head><meta name="robots" content="index,follow">
<title>脚本 6.1. 脚本参数</title></head><body bgcolor="#FFFFFF">
<table border=0 cellpadding=0 cellspacing=0><tr><td bgcolor="#CCCC00"><table border=4 cellpadding=9><tr><td align=middle bgcolor="#000000"><font face="Palatino,Times" size=6 color="#999900"><b>
脚本 6.1. 脚本参数
</b></font></table></table>
<p>
可以让Praat脚本弹出参数设置窗口。比如有文件<code>playSine.praat</code>内容如下:</p>
<code>
<b>form</b> Play a sine wave<br></code>
<code>
<b>positive</b> Sine_frequency_(Hz) 377<br></code>
<code>
<b>positive</b> Gain_(0..1) 0.3 (= not too loud)<br></code>
<code>
<b>endform</b><br></code>
<code>
Create Sound... sine'sine_frequency' 0 1 10000 'gain' * sin (2*pi*'sine_frequency'*x)<br></code>
<code>
Play<br></code>
<code>
Remove<br></code>
<p>
运行该脚本时,解释器程序弹出一个标题为“Play a sine wave”的设置窗口(<i>表单</i>),以及标为“Sine frequency (Hz)”和“Gain”的两栏,分别包含标准值“377”和“0.3 (= not too loud)”,在单击<b>OK(确定)</b>按钮之前可以更改。</p>
<p>
可以看到,下划线为空格所取代——表单里这样显示比较美观。回到脚本中,选项栏的名称便可以当作变量使用。因为不能含有空格,所以都用下划线替代,但圆括号(Hz)的部分会直接去掉。注意,这些变量的首字母全都转换成了小写,因而在脚本中还可以对它们赋值。</p>
<p>
到了脚本中,“0.3 (= not too loud)”这个值仅当作“0.3”接受,因为这是个数值选项。</p>
<p>
可以在表单中使用如下选项类型:</p>
<dl>
<dt>
<b>real</b> <i>变量</i> <i>初始值</i>
<dd>
用于实数。
<dt>
<b>positive</b> <i>变量</i> <i>初始值</i>
<dd>
用于正实数——如果输入了负值或零,表单将报错。往后在脚本中,该变数还可以取任何值。
<dt>
<b>integer</b> <i>变量</i> <i>初始值</i>
<dd>
用于整数——表单将输入的数值当作整数。往后在脚本中,该变数还可以取任何实数值。
<dt>
<b>natural</b> <i>变量</i> <i>初始值</i>
<dd>
用于正整数——如果输入了负值或零,表单将报错。往后在脚本中,该变数还可以取任何实数值。
<dt>
<b>word</b> <i>变量</i> <i>初始值</i>
<dd>
用于无空格的字符串——表单只读取到底一个空格处(“oh yes”变成“oh”)。往后在脚本中,该字符串可以任意包含空格。
<dt>
<b>sentence</b> <i>变量</i> <i>初始值</i>
<dd>
用于任意的短字符串。
<dt>
<b>text</b> <i>变量</i> <i>初始值</i>
<dd>
用于无限长的字符串(变量名称不会出现在表单上)。
<dt>
<b>boolean</b> <i>变量</i> <i>初始值</i>
<dd>
显示一个复选框。“关”取值为0,“开”取值为1。
<dt>
<b>choice</b> <i>变量</i> <i>初始值</i>
<dd>
显示一组单选框。取值从1起。后面紧跟着这样一串:
<dt>
<b>button</b> <i>文本</i>
<dd>
单选框中的一个按钮。
<dt>
<b>comment</b> <i>文本</i>
<dd>
任意的一行文字。
</dl>
<p>
这里的字符串在脚本中就当作字符串变量,数值就当作数值变量:</p>
<code>
<b>form</b> Sink it<br></code>
<code>
<b>sentence</b> Name_of_the_ship Titanic<br></code>
<code>
<b>real</b> Distance_to_the_iceberg_(m) 500.0<br></code>
<code>
<b>natural</b> Number_of_people 1800<br></code>
<code>
<b>natural</b> Number_of_boats 10<br></code>
<code>
<b>endform</b><br></code>
<p>
该脚本中,有变量分别为<i>name_of_the_ship$</i>、<i>distance_to_the_iceberg</i>、<i>number_of_people</i>与<i>number_of_boats</i>。</p>
<p>
可以得到同一组单选框相关联的数值和字符串值的两个变量:</p>
<code>
<b>form</b> Fill attributes<br></code>
<code>
<b>comment</b> Choose any colour and texture for your paintings<br></code>
<code>
<b>choice</b> Colour: 5<br></code>
<code>
<b>button</b> Dark red<br></code>
<code>
<b>button</b> Sea green<br></code>
<code>
<b>button</b> Navy blue<br></code>
<code>
<b>button</b> Canary yellow<br></code>
<code>
<b>button</b> Black<br></code>
<code>
<b>button</b> White<br></code>
<code>
<b>choice</b> Texture: 1<br></code>
<code>
<b>button</b> Smooth<br></code>
<code>
<b>button</b> Rough<br></code>
<code>
<b>button</b> With holes<br></code>
<code>
<b>endform</b><br></code>
<code>
<b>echo</b> You chose the colour 'colour$' and texture 'texture$'.<br></code>
<p>
以上将显示两组单选框。在Colour一组中,第5个按钮(Black)是标准值。如果单击“Navy blue”并单击<b><i>OK(确定)</i></b>按钮,变量<i>colour</i>将得到“3”的值,而变量<i>colour$</i>将得到“Navy blue”的值。注意:附在后面的冒号不要了;button和comment后面的文本可以包含空格。这样的话,可以用下面任何一种方法检验Colour单选框的值:</p>
<code>
if colour = 4<br></code>
<p>
or</p>
<code>
if colour$ = "Canary yellow"<br></code>
<p>
选项类型<b>optionmenu</b>与<b>option</b>非常类似<b>choice</b>与<b>button</b>,占用屏幕上的空间还更少:</p>
<code>
<b>form</b> Fill attributes<br></code>
<code>
<b>comment</b> Choose any colour and texture for your paintings<br></code>
<code>
<b>optionmenu</b> Colour: 5<br></code>
<code>
<b>option</b> Dark red<br></code>
<code>
<b>option</b> Sea green<br></code>
<code>
<b>option</b> Navy blue<br></code>
<code>
<b>option</b> Canary yellow<br></code>
<code>
<b>option</b> Black<br></code>
<code>
<b>option</b> White<br></code>
<code>
<b>optionmenu</b> Texture: 1<br></code>
<code>
<b>option</b> Smooth<br></code>
<code>
<b>option</b> Rough<br></code>
<code>
<b>option</b> With holes<br></code>
<code>
<b>endform</b><br></code>
<code>
<b>echo</b> You chose the colour 'colour$' and texture 'texture$'.<br></code>
<p>
可以用前缀<i>left</i>和<i>right</i>将两个短选项并入一行:</p>
<code>
<b>form</b> Get duration<br></code>
<code>
<b>natural</b> left_Year_range 1940<br></code>
<code>
<b>natural</b> right_Year_range 1945<br></code>
<code>
<b>endform</b><br></code>
<code>
duration = right_Year_range - left_Year_range<br></code>
<code>
<b>echo</b> The duration is 'duration' years.<br></code>
<p>
解释其程序将只显示一段文字“Year range”,后面是两个短短的选项栏。</p>
<h3>
在脚本中调用脚本</h3>
<p>
脚本可以嵌套——文件<i>doremi.praat</i>的内容可能如下:</p>
<code>
<b>execute</b> playSine.praat 550 0.9<br></code>
<code>
<b>execute</b> playSine.praat 615 0.9<br></code>
<code>
<b>execute</b> playSine.praat 687 0.9<br></code>
<p>
利用<b>execute</b>命令,可以让Praat不显示表单窗口,只将该命令中提供的参数(比如550和0.9)直接传递过去。</p>
<p>
除最后一个之外的参数,如果包含空格,就必须用双引号括引。传给<b>choice</b>类型参数的值必须是字符串:</p>
<code>
<b>execute</b> "fill attributes.praat" "Navy blue" With holes<br></code>
<p>
可以向<b>boolean</b>类型的参数传递“yes”或“no”,或者1或0。</p>
<h3>指向本页的链接</h3>
<ul>
<li><a href="Scripting.html">脚本</a>
<li><a href="Scripting_6__Communication_outside_the_script.html">脚本 6. 脚本外通信</a>
<li><a href="Scripting_6_9__Calling_from_the_command_line.html">脚本 6.9. 从命令行调用</a>
</ul>
<hr>
<address>
<p>© ppgb, April 14, 2004</p>
<p>© 翻译:徐清白,2005年06月04日</p>
</address>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -