提交 372ba34d 编写于 作者: 三月三net's avatar 三月三net

太阳系三体模拟器

上级 a4e8bf9e
......@@ -7,7 +7,7 @@
# python_version :3.8
# ==============================================================================
from ursina import Ursina, window, Entity, Grid, Mesh, camera, Text, application, color, mouse, Vec2, Vec3, \
load_texture, held_keys, Button
load_texture, held_keys, Button, Tooltip
from ursina.prefabs.first_person_controller import FirstPersonController
from simulators.ursina.ursina_config import UrsinaConfig
from simulators.ursina.ursina_event import UrsinaEvent
......@@ -36,14 +36,19 @@ class UiSlider(Slider):
class SwithButton(ButtonGroup):
def __init__(self, options, default):
def __init__(self, options, default, tooltips=None):
super().__init__(options, min_selection=1, y=0, default=default,
selected_color=color.green, ignore_paused=True,
selected_color=color.rgba(0.1, 0.6, 0.1, 1.0), ignore_paused=True,
color=color.rgba(0.0, 0.0, 0.0, 0.5))
# self.label.scale = 0.8
# self.label.font = UrsinaConfig.CN_FONT
for button in self.buttons:
for i, button in enumerate(self.buttons):
button.text_entity.font = UrsinaConfig.CN_FONT
if tooltips is not None:
if len(tooltips) > i:
tooltip = Tooltip(tooltips[i])
tooltip.font = UrsinaConfig.CN_FONT
button.tooltip = tooltip
class UiButton(Button):
......
......@@ -13,7 +13,7 @@ from ursina.prefabs.first_person_controller import FirstPersonController
from simulators.ursina.ui_component import UiSlider, SwithButton, UiButton
from simulators.ursina.ursina_config import UrsinaConfig
from simulators.ursina.ursina_event import UrsinaEvent
from ursina import WindowPanel, InputField, Button, Slider, ButtonGroup
from ursina import WindowPanel, InputField, Button, Slider, ButtonGroup, Panel
class UrsinaUI:
......@@ -22,6 +22,8 @@ class UrsinaUI:
self.start_button_text = "●" # 》●▲○◎
self.pause_button_text = "〓" # 〓 || ‖
self.no_trail_button_text = "○ "
self.trail_button_text = "○--"
application.time_scale = 0.5
self.slider_body_spin_factor = UiSlider(text='自转速度', min=0.01, max=30, default=1)
......@@ -37,20 +39,27 @@ class UrsinaUI:
self.slider_trail_length.on_value_changed = self.on_slider_trail_length_changed
self.on_off_switch = SwithButton((self.pause_button_text,
self.start_button_text), default=self.start_button_text)
self.start_button_text),
default=self.start_button_text,
tooltips=('暂停', '运行'))
self.on_off_switch.selected_color = color.red
self.on_off_trail = SwithButton((' ', '...'), default=' ')
self.on_off_trail = SwithButton((self.no_trail_button_text, self.trail_button_text),
default=self.no_trail_button_text,
tooltips=('天体运行无轨迹', '天体运行有拖尾轨迹'))
self.on_off_trail.on_value_changed = self.on_off_trail_changed
self.point_button = UiButton(text='寻找', on_click=self.on_point_button_click)
self.reset_button = UiButton(text='重置', on_click=self.on_reset_button_click)
self.on_off_switch.on_value_changed = self.on_off_switch_changed
self.point_button.scale_x = -0.2
self.reset_button.scale_x = 0.2
self.on_off_switch.on_value_changed = self.on_off_switch_changed
wp = WindowPanel(
title='',
content=(
Text('方位控制: Q W E A S D + 鼠标右键',font='msyhl.ttc'),
Text('方位控制: Q W E A S D + 鼠标右键', font='msyhl.ttc'),
# InputField(name='name_field'),
# Button(text='Submit', color=color.azure),
self.point_button,
......@@ -86,10 +95,8 @@ class UrsinaUI:
# slider_text = Text(text='自转速度', scale=1, position=(-0.6, 0.3))
# slider = Slider(scale=0.5, position=(-0.6, 0), min=0, max=10, step=1, text=slider_text)
def on_off_trail_changed(self):
if self.on_off_trail.value == "...":
if self.on_off_trail.value == self.trail_button_text:
UrsinaConfig.show_trail = True
else:
UrsinaConfig.show_trail = False
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册