Python Kivy GUI-在圆形中填充颜色,就像在圆形容器中填充水一样
如上图所示,我需要在Kivy GUI中编写一个Python Kivy GUI-在圆形中填充颜色,就像在圆形容器中填充水一样,python,kivy,Python,Kivy,如上图所示,我需要在Kivy GUI中编写一个.kv文件,以便在值增加时显示一个填充颜色的圆圈。对于0值,它是空的,因为值增加圆用颜色填充 我如何才能做到这一点?这种效果可以通过为此创建一个遮罩来实现,您可以使用如下所示: from kivy.app import App from kivy.lang import Builder main_widget_kv = ''' BoxLayout: border: 10 WaterFill: level: slide
.kv
文件,以便在值增加时显示一个填充颜色的圆圈。对于0值,它是空的,因为值增加圆用颜色填充
我如何才能做到这一点?这种效果可以通过为此创建一个遮罩来实现,您可以使用如下所示:
from kivy.app import App
from kivy.lang import Builder
main_widget_kv = '''
BoxLayout:
border: 10
WaterFill:
level: slider.value_normalized
color: 1, 1, 0
Slider:
id: slider
orientation: 'vertical'
value: 50
<WaterFill@Widget>:
level: 0.1
width: self.height
size_hint: None, 1
color: 0, 0, 1
canvas:
StencilPush
Ellipse:
pos: root.pos
size: root.size
StencilUse
Color:
rgb: root.color
Rectangle:
pos: root.pos
size: (root.width, root.level*root.height)
StencilUnUse
StencilPop
'''
class TestApp(App):
def build(self):
return Builder.load_string(main_widget_kv)
if __name__ == '__main__':
TestApp().run()
这种效果可以通过创建一个遮罩来实现,您可以使用该遮罩,如下所示:
from kivy.app import App
from kivy.lang import Builder
main_widget_kv = '''
BoxLayout:
border: 10
WaterFill:
level: slider.value_normalized
color: 1, 1, 0
Slider:
id: slider
orientation: 'vertical'
value: 50
<WaterFill@Widget>:
level: 0.1
width: self.height
size_hint: None, 1
color: 0, 0, 1
canvas:
StencilPush
Ellipse:
pos: root.pos
size: root.size
StencilUse
Color:
rgb: root.color
Rectangle:
pos: root.pos
size: (root.width, root.level*root.height)
StencilUnUse
StencilPop
'''
class TestApp(App):
def build(self):
return Builder.load_string(main_widget_kv)
if __name__ == '__main__':
TestApp().run()
伟大的解决方案,谢谢您的帮助。我更改了level的值而不是slider。但应该如何通过调用from方法来更改该值。请再给我一个帮助。@Bhu_24我添加了一个例子。如果我的答案对您有帮助,请不要忘记将其标记为正确,如果您不知道如何操作,请检查“对不起,我是新用户”中的堆栈溢出。你的解决方案对我很有帮助。再次感谢。同样的,还有一个帮助。如何使用相同的逻辑更改2个或多个圆形填充布局。我试图定义id,但没有办法做到这一点???请help@Bhu_24创建一个新问题,详细说明您尝试过的内容以及遇到的问题。太好了!!!解决方案,谢谢您的帮助。我更改了level的值而不是slider。但应该如何通过调用from方法来更改该值。请再给我一个帮助。@Bhu_24我添加了一个例子。如果我的答案对您有帮助,请不要忘记将其标记为正确,如果您不知道如何操作,请检查“对不起,我是新用户”中的堆栈溢出。你的解决方案对我很有帮助。再次感谢。同样的,还有一个帮助。如何使用相同的逻辑更改2个或多个圆形填充布局。我试图定义id,但没有办法做到这一点???请help@Bhu_24创建一个新问题,详细说明您尝试过的内容以及遇到的问题。