Skip to content

文本输入

winputinput 命令允许用户输入由程序处理的文本。

input

input() 函数接受来自弹出对话框的用户输入。这类似于 Python 的 input() 函数,但允许指定提示。

python
mytext = input(prompt='Enter a color:')
属性名类型说明
prompt字符串提示文本。

如果用户按下“取消”而不是输入字符串,该函数返回 None。输入可以转换为数字:val = float(mytext)

python
ss = input('What is your name?')

if ss != None:
    print('Hello', ss)
else:
    print('Goodbye')

winput

winput() 小部件可以放置在画布的说明区域(默认位置)或标题区域。它显示一个用户可以输入的框。用户必须在输入文本之前选择文本输入区域。当用户按下 EnterTab 键或点击 VPython 画布之外的地方时,绑定到 winput 小部件的函数将被执行。如果某些属性在创建后不能修改,则标记为“不可修改”。

python
ww = winput(bind=myfunction, prompt='value', type='numeric')
属性名类型说明
bind函数输入结束时调用的函数(通过 Enter、Tab 或点击画布外部)。
prompt字符串显示在 winput 框左侧的文本。(仅限 WebVPython)。
type字符串请求的输入类型:“numeric”(默认)或“string”。不可修改。
pos画布属性复选框的位置。默认值为 scene.caption_anchor。
width标量输入框的宽度(以像素为单位)。默认值为 100。不可修改。
height标量输入框的高度(以像素为单位)。默认值为 20。不可修改。
text字符串显示在框中的文本,无论是用户输入的还是程序设置的。
number标量如果类型是“numeric”,则评估用户输入文本的结果,否则为 None。不可修改。
disabled布尔值如果为 True,文本变灰且 winput 不活动。
delete()方法从显示中删除 winput 框的方法。

此代码使用 winput 调整球体的半径:

python
ss = sphere(pos=vec(-2,0,0), radius=0.2, color=color.yellow)

def change_radius(evt):
    rad = evt.number
    if rad != None:
        if rad < 10:
            ss.radius = evt.number
        else:
            print(rad + ' is too large')
            ww.text = ''

scene.append_to_caption('Radius must be less than 10 \n')
ww = winput(prompt='Radius:', bind=change_radius, type='numeric')