有没有大佬教我一下怎么打包
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()