«

有没有大佬教我一下怎么打包

JKiFrkdN 发布于 阅读:67 Python程序设计


from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.core.window import Window
from kivy.lang import Builder
from kivy.metrics import dp, sp # 导入 dp 和 sp
from kivy.core.text import LabelBase # 导入 LabelBase
from kivy.animation import Animation # 导入 Animation

注册字体

LabelBase.register(
name="SimHei", # 注册的字体名称
fn_regular="simheittf.ttf" # 字体文件名
)

设置窗口背景颜色(浅灰色)

Window.clearcolor = (0.93, 0.93, 0.93, 1)

手动加载 KV 文件

Builder.load_file('fib_calculator.kv')

class FibonacciLayout(BoxLayout):
def validate_input(self, instance, value):
"""实时验证输入是否为有效数字"""
try:
float(value)
self.ids.result_label.text = "" # 清空错误提示
except ValueError:
if value: # 如果输入非空
self.ids.result_label.text = "[color=ff0000][size={}]{}</size][/color]".format(
round(sp(16)), "请输入有效的数字!"
)

def calculate_fib(self):
    try:
        high = float(self.ids.high_input.text)
        low = float(self.ids.low_input.text)

        if high <= low:
            self.ids.result_label.text = "[color=ff0000][size={}]{}</size][/color]".format(
                round(sp(16)), "高点必须大于低点!"
            )
            return

        fib_levels = [0, 0.079, 0.153, 0.194, 0.236, 0.316, 0.382, 0.5, 0.618, 0.707, 0.786, 0.852, 0.88, 0.921, 1, 1.382, 1.618]
        fib_values = [low   (high - low) * level for level in fib_levels]

        # 格式化结果,并根据条件设置颜色
        result = f"[b][size={round(sp(18))}]ETH 斐波那契水平[/size][/b]:\n"
        for i, value in enumerate(fib_values):
            level_percent = fib_levels[i] * 100  # 转换为百分比
            if fib_levels[i] in [0.079, 0.921]:  # 特定值设置为红色
                result  = f"[color=ff0000][size={round(sp(16))}]Level {level_percent:.1f}%:[/size][/color] [color=ff0000]{value:.4f}[/color]\n"
            else:
                result  = f"[size={round(sp(16))}]Level {level_percent:.1f}%:[/size] {value:.4f}\n"

        self.ids.result_label.text = result

        # 添加按钮动画
        anim = Animation(background_color=(0.2, 0.5, 0.8, 1), duration=0.2)   \
               Animation(background_color=(0.1, 0.4, 0.7, 1), duration=0.2)
        anim.start(self.ids.calculate_button)
    except ValueError:
        self.ids.result_label.text = "[color=ff0000][size={}]{}</size][/color]".format(
            round(sp(16)), "请输入有效的数字!"
        )

class FibonacciApp(App):
def build(self):
return FibonacciLayout()

if name == "main":
FibonacciApp().run()


扫描二维码,在手机上阅读
收藏
请先 登录 再评论