为什么 kivy 显示的是白色背景而不是真正的 rgba 数字?
Why does kivy show me a white background instead of the real rgba number?
在这个程序中,我将 Label
的背景颜色设置为 6, 61, 81, 1
,如下所示:
background_color: 6, 61, 81, 1
canvas.before:
Color:
rgba:self.background_color
但在输出中 kivy 显示白色背景。
所以我看不到我设置的实际颜色。
代码:
import kivy
from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.gridlayout import GridLayout
from kivy.uix.button import Button
from kivy.uix.textinput import TextInput
from kivy.lang import Builder
from kivy.uix.widget import Widget
from kivy.core.window import Window
from kivy.graphics import Color, Rectangle
Builder.load_string("""
<grid>
GridLayout:
cols:1
size: root.width,root.height
GridLayout:
cols:2
Label:
size_hint: (1, None)
height: 33
text:'1'
background_color: 6, 61, 81, 1
canvas.before:
Color:
rgba:self.background_color
Rectangle:
size: self.size
pos: self.pos
TextInput:
multiline:False
height: 33
size_hint: (5, None)
background_color: 0,0,0,0
foreground_color: 87, 30, 59, 0.8
""")
class grid(Widget):
pass
class foo(App):
def build(self):
Window.clearcolor='#1618388'
return grid()
if __name__ == '__main__':
foo().run()
但是我将 rgba
值设置为 1,0,0,1
它显示正确。
我该如何解决这个问题?
您提供的是 8 位整数 RGB 值,即从 0 到 255 的整数,其中 255 是完全饱和的。
Kivy 的 API 使用 0-1 范围内的浮点 RGB 值。
要将您的单位转换为 Kivy 期望的单位,请将您的 RGB 值除以 255。
在这个程序中,我将 Label
的背景颜色设置为 6, 61, 81, 1
,如下所示:
background_color: 6, 61, 81, 1
canvas.before:
Color:
rgba:self.background_color
但在输出中 kivy 显示白色背景。
所以我看不到我设置的实际颜色。
代码:
import kivy
from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.gridlayout import GridLayout
from kivy.uix.button import Button
from kivy.uix.textinput import TextInput
from kivy.lang import Builder
from kivy.uix.widget import Widget
from kivy.core.window import Window
from kivy.graphics import Color, Rectangle
Builder.load_string("""
<grid>
GridLayout:
cols:1
size: root.width,root.height
GridLayout:
cols:2
Label:
size_hint: (1, None)
height: 33
text:'1'
background_color: 6, 61, 81, 1
canvas.before:
Color:
rgba:self.background_color
Rectangle:
size: self.size
pos: self.pos
TextInput:
multiline:False
height: 33
size_hint: (5, None)
background_color: 0,0,0,0
foreground_color: 87, 30, 59, 0.8
""")
class grid(Widget):
pass
class foo(App):
def build(self):
Window.clearcolor='#1618388'
return grid()
if __name__ == '__main__':
foo().run()
但是我将 rgba
值设置为 1,0,0,1
它显示正确。
我该如何解决这个问题?
您提供的是 8 位整数 RGB 值,即从 0 到 255 的整数,其中 255 是完全饱和的。
Kivy 的 API 使用 0-1 范围内的浮点 RGB 值。
要将您的单位转换为 Kivy 期望的单位,请将您的 RGB 值除以 255。