You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Ursina Engine的小窗口中添加数值范围选择字段

数值选择控件示例

Ursina 1000~100万数值选择控件实现

Ursina 内置的Slider和InputField组件可以快速实现你要的带联动输入的数值选择功能,完整实现代码如下:

from ursina import *

app = Ursina()

class RangeNumberPicker(Entity):
    def __init__(self, min_val=1000, max_val=1000000, default_val=10000, position=(0,0), **kwargs):
        super().__init__(parent=camera.ui, position=position, **kwargs)
        self.min_val = min_val
        self.max_val = max_val
        # 滑块组件
        self.slider = Slider(
            parent=self,
            min=min_val,
            max=max_val,
            default=default_val,
            x=0,
            y=0,
            length=0.4,
            step=100, # 步长可根据需求调整
            on_value_changed=self.update_input
        )
        # 数值输入框
        self.input_field = InputField(
            parent=self,
            x=0.45,
            y=0,
            default_value=str(default_val),
            limit_content_to='0123456789',
            max_lines=1,
            width=0.15,
            on_submit=self.update_slider
        )
    
    def update_input(self):
        # 滑块变动时更新输入框数值
        self.input_field.text = str(int(self.slider.value))
    
    def update_slider(self):
        # 输入数值时更新滑块位置,加数值范围校验
        input_num = int(self.input_field.text) if self.input_field.text.isdigit() else self.min_val
        if input_num < self.min_val:
            input_num = self.min_val
        if input_num > self.max_val:
            input_num = self.max_val
        self.slider.value = input_num
        self.input_field.text = str(input_num)

# 实例化控件,调整position参数放在你需要的界面位置即可
picker = RangeNumberPicker(position=(-0.3, 0.2))

if __name__ == '__main__':
    app.run()
  • 你可以修改step参数调整滑块拖动时的最小变化单位
  • 如果需要显示千分位格式的数值,只需要在update_input方法里修改字符串格式化规则即可
  • 控件默认固定了输入内容只能是数字,避免非法输入

内容的提问来源于stack exchange,提问作者proking

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 12:15:03