ui_component.py 2.6 KB
Newer Older
三月三net's avatar
三月三net 已提交
1 2 3 4 5 6 7 8 9
# -*- coding:utf-8 -*-
# title           :ursina UI组件
# description     :ursina UI组件
# author          :Python超人
# date            :2023-02-11
# link            :https://gitcode.net/pythoncr/
# python_version  :3.8
# ==============================================================================
from ursina import Ursina, window, Entity, Grid, Mesh, camera, Text, application, color, mouse, Vec2, Vec3, \
三月三net's avatar
三月三net 已提交
10
    load_texture, held_keys, Button, Tooltip
三月三net's avatar
三月三net 已提交
11 12 13 14
from ursina.prefabs.first_person_controller import FirstPersonController
from simulators.ursina.ursina_config import UrsinaConfig
from simulators.ursina.ursina_event import UrsinaEvent
from ursina import WindowPanel, InputField, Button, Slider, ButtonGroup
三月三net's avatar
三月三net 已提交
15
from simulators.ursina.ursina_config import UrsinaConfig
三月三net's avatar
三月三net 已提交
16 17 18 19


class UiSlider(Slider):
    def __init__(self, text, min=0.01, max=3, default=1):
三月三net's avatar
三月三net 已提交
20
        # Text.default_font = 'msyhl.ttc'  # 'simsun.ttc'
三月三net's avatar
三月三net 已提交
21 22 23 24 25 26 27
        super().__init__(text=text,
                         height=Text.size,
                         y=-.6,
                         step=.01,
                         min=min,
                         max=max,
                         default=default,
三月三net's avatar
三月三net 已提交
28 29 30 31 32 33 34 35
                         color=color.rgba(0.0, 0.0, 0.0, 0.5),
                         ignore_paused=False,
                         dynamic=True)
        # self.label.scale *= 8/10
        self.label.font = UrsinaConfig.CN_FONT
        # self.knob.text_entity.font = ""
        # self.knob.text_entity.scale *= 8/10
        # self.height *= 8/10
三月三net's avatar
三月三net 已提交
36 37


三月三net's avatar
三月三net 已提交
38

三月三net's avatar
三月三net 已提交
39
class SwithButton(ButtonGroup):
三月三net's avatar
三月三net 已提交
40
    def __init__(self, options, default, tooltips=None):
三月三net's avatar
三月三net 已提交
41
        super().__init__(options, min_selection=1,default=default,
三月三net's avatar
三月三net 已提交
42
                         selected_color=color.rgba(0.1, 0.6, 0.1, 1.0), ignore_paused=True,
三月三net's avatar
三月三net 已提交
43 44 45
                         color=color.rgba(0.0, 0.0, 0.0, 0.5))
        # self.label.scale = 0.8
        # self.label.font = UrsinaConfig.CN_FONT
三月三net's avatar
三月三net 已提交
46
        for i, button in enumerate(self.buttons):
三月三net's avatar
三月三net 已提交
47
            button.text_entity.font = UrsinaConfig.CN_FONT
三月三net's avatar
三月三net 已提交
48 49 50 51 52
            if tooltips is not None:
                if len(tooltips) > i:
                    tooltip = Tooltip(tooltips[i])
                    tooltip.font = UrsinaConfig.CN_FONT
                    button.tooltip = tooltip
三月三net's avatar
三月三net 已提交
53
        self.x = -0.5
三月三net's avatar
三月三net 已提交
54 55 56 57 58 59 60 61


class UiButton(Button):
    def __init__(self, text, on_click):
        super(UiButton, self).__init__(text=text, origin=(0, 0), y=2,
                                       on_click=on_click, color=color.rgba(0.0, 0.0, 0.0, 0.5),
                                       ignore_paused=False)
        self.text_entity.font = UrsinaConfig.CN_FONT