ui_component.py 3.4 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


class UiSlider(Slider):
三月三net's avatar
三月三net 已提交
19
    def __init__(self, text, min=0.01, max=3, step=.01, default=1):
三月三net's avatar
三月三net 已提交
20
        # Text.default_font = 'msyhl.ttc'  # 'simsun.ttc'
三月三net's avatar
三月三net 已提交
21 22 23
        super().__init__(text=text,
                         height=Text.size,
                         y=-.6,
三月三net's avatar
三月三net 已提交
24
                         step=step,
三月三net's avatar
三月三net 已提交
25 26 27
                         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 38


class SwithButton(ButtonGroup):
三月三net's avatar
三月三net 已提交
39
    def __init__(self, options, default, tooltips=None):
三月三net's avatar
三月三net 已提交
40
        super().__init__(options, min_selection=1, default=default,
三月三net's avatar
三月三net 已提交
41
                         selected_color=color.rgba(0.1, 0.6, 0.1, 1.0), ignore_paused=True,
三月三net's avatar
三月三net 已提交
42 43 44
                         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 已提交
45
        for i, button in enumerate(self.buttons):
三月三net's avatar
三月三net 已提交
46
            button.text_entity.font = UrsinaConfig.CN_FONT
三月三net's avatar
三月三net 已提交
47 48 49 50 51
            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 已提交
52
        self.x = -0.5
三月三net's avatar
三月三net 已提交
53 54


三月三net's avatar
三月三net 已提交
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
class Buttons(ButtonGroup):
    def __init__(self, options, default=None, tooltips=None):
        min_selection = len(options)
        super().__init__(options, min_selection=1, default=default,
                         color=color.rgba(0.1, 0.6, 0.1, 1.0), ignore_paused=True,
                         selected_color=color.rgba(0.0, 0.0, 0.0, 0.5))
        # self.label.scale = 0.8
        # self.label.font = UrsinaConfig.CN_FONT\
        for i, button in enumerate(self.buttons):
            button.text_entity.font = UrsinaConfig.CN_FONT

            # button.scale_x = 2
            if tooltips is not None:
                if len(tooltips) > i:
                    tooltip = Tooltip(tooltips[i])
                    tooltip.font = UrsinaConfig.CN_FONT
                    button.tooltip = tooltip
        self.x = -0.5


三月三net's avatar
三月三net 已提交
75 76 77 78 79 80
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