You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Ursina引擎中fit_to_text()失效时,如何让Button适配Text?

解决Button.fit_to_text()后按钮过大的问题

针对你遇到的调用fit_to_text()后按钮远大于文本的问题,可尝试以下几种解决方案:

1. 修正文本分辨率设置

你全局设置了Text.default_resolution = WINDOW_HEIGHT * 2 * Text.size,这个放大倍数可能导致文本渲染尺寸被过度放大,进而让fit_to_text()计算出的按钮尺寸偏大。建议调整该值,或者在创建Button时单独指定合适的text_resolution:

self.button = Button(
    text=self.textinput,
    color=color.rgba(0,255,0,255),
    text_color=color.rgb(*self.unhovered),
    x=self.position[0],
    y=self.position[1],
    on_click=self.click,
    text_resolution=WINDOW_HEIGHT * Text.size  # 移除多余的*2,或根据实际需求调整
)
self.button.fit_to_text()

2. 调整Button的内边距

多数UI框架的Button默认带有内边距,fit_to_text()会将这些内边距纳入按钮尺寸计算。如果你的Button类支持设置padding,可手动缩小内边距:

self.button.fit_to_text()
self.button.padding = (4, 3)  # 分别设置左右、上下内边距,数值按需调整

3. 优化字体行高与间距

部分字体自带较大的行高或字间距,会让fit_to_text()计算的包裹范围变大。可以尝试调整全局文本行高:

Text.line_height = 1.0  # 将行高设为紧贴文本的数值

也可以更换字体测试,确认是否是字体本身的问题。

4. 手动计算文本尺寸并设置按钮大小

如果fit_to_text()方法不符合预期,可绕过它,手动计算文本的实际宽高后直接设置Button尺寸:

# 创建临时文本对象获取真实尺寸
temp_text = Text(
    text=self.textinput,
    size=Text.size,
    font=Text.default_font,
    resolution=Text.default_resolution
)
# 给文本添加少量内边距后设置按钮尺寸
self.button.size = (temp_text.width + 8, temp_text.height + 4)

内容的提问来源于stack exchange,提问作者Tristan Hanks

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 17:40:46