如何在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
相关产品推荐
相关产品推荐

