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

如何让Kivy的ProgressBar变粗?修改height无效的技术问询

解决Kivy ProgressBar无法变粗的问题

问题出在Kivy默认的ProgressBar内部的进度条高度是由bar_height属性控制的,不是你设置的Widget整体height。哪怕你把Widget的height调大,内部的进度条还是保持默认的细条样式。下面给你两种解决方法:

方法一:直接修改默认ProgressBar的bar_height属性

这是最简单的方式,直接在kv文件里给ProgressBar添加bar_height属性,同时调整Widget的高度来适配:

修改后的kv文件关键部分:

ProgressBar:
    id: my_progress_bar
    max:100
    value: my_slider.value
    pos_hint: {"center_x" :.5}
    size_hint:.9, None  # 固定高度时把size_hint_y设为None
    height: "50dp"       # 设置Widget的整体高度,要足够容纳粗进度条
    bar_height: "45dp"   # 这个属性直接控制进度条的粗细

方法二:自定义ProgressBar完全控制样式

如果需要更灵活的样式(比如让背景也和进度条一样粗),可以重写ProgressBar的绘制逻辑:

1. 修改main.py添加自定义ProgressBar类

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.progressbar import ProgressBar


class ThickProgressBar(ProgressBar):
    pass


class WidgetsExample(BoxLayout):
    pass


class TheLabApp(App):
    pass


TheLabApp().run()

2. 在kv文件里定义自定义ProgressBar的样式并替换原组件

WidgetsExample:

<WidgetsExample>:
    canvas.before:
        Color:
            rgba:(0.71, 0.71, 0.7,1)
        Rectangle:
            pos: self.pos
            size: self.size
    orientation: "vertical"
    padding: "10dp"
    spacing: "10dp"
    Label:
        text: "You have not gambled for"
        size_hint: 1,.2
    # 使用自定义的粗进度条
    ThickProgressBar:
        id: my_progress_bar
        max:100
        value: my_slider.value
        pos_hint: {"center_x" :.5}
        size_hint:.9,.1  # 这里的size_hint_y直接控制进度条粗细
    Slider:
        orientation: "vertical"
        id: my_slider
        min:0
        max:100
        value:50
    Label:
        text: str(int(my_slider.value))

# 自定义粗进度条的绘制逻辑
<ThickProgressBar>:
    canvas:
        # 绘制背景
        Color:
            rgba: 0.5, 0.5, 0.5, 1
        Rectangle:
            pos: self.pos
            size: self.size
        # 绘制进度条
        Color:
            rgba: 0, 1, 0, 1
        Rectangle:
            pos: self.pos
            size: (self.value / self.max) * self.width, self.height

这样设置后,进度条的粗细就会和你设置的Widget高度一致,完全符合你的需求。

内容的提问来源于stack exchange,提问作者Sulek Levrone

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 12:03:29