[英]Display Kivy canvas inside GridLayout
我试图在 GridLayout 中引用 Canvas ,在进一步开发之前只绘制简单的矩形。 代码:
主要.py:
import kivy
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.lang import Builder
from kivy.graphics.vertex_instructions import Rectangle
from kivy.graphics.context_instructions import Color
class Grafika(Widget):
def __init__(self, **kwargs):
super(Grafika,self).__init__(**kwargs)
with self.canvas:
Color(1, 0, 0, 1)
Rectangle(pos=self.pos,size=self.size)
kv=Builder.load_file("my.kv")
class MyMainApp(App):
def build(self):
return kv
if __name__ == "__main__":
MyMainApp().run()
我的.py
<TextInput>:
font_size:20
color: 0.3, 0.6,0.7,1
size_hint: (0.3,0.5)
<Button>:
font_size:20
color: 0.3, 0.6,0.7,1
size_hint: (0.3,0.3)
Grafika:
GridLayout:
cols:2
GridLayout:
size_hint: (0.3,0.2)
cols:1
GridLayout:
cols:2
Label:
text:"no"
TextInput:
text: "50"
Label:
text:"rbr"
TextInput:
text: "100"
Button:
text:"calc"
canvas:
Color:
rbg:1, 1, 1, 1
Rectangle:
pos:self.pos
size:self.size
运行后我得到错误:
...
27: Button:
28: text:"calc"
>> 29: canvas:
30: Color:
31: rbg:1, 1, 1, 1
...
Canvas instructions added in kv must be declared before child widgets.
我是 kivy 的新手,因此不胜感激。
解决此问题后,我打算运行自定义 python func,在按钮 calc 下运行,并在 canvas 上返回计算结果。 Func 结果是二维线点,因此在 canvas 上绘制结果是这里的目标。
改变:
Grafika:
GridLayout:
cols:2
GridLayout:
size_hint: (0.3,0.2)
cols:1
GridLayout:
cols:2
Label:
text:"no"
TextInput:
text: "50"
Label:
text:"rbr"
TextInput:
text: "100"
Button:
text:"calc"
canvas:
Color:
rbg:1, 1, 1, 1
Rectangle:
pos:self.pos
size:self.size
至:
Grafika:
GridLayout:
cols:2
canvas:
Color:
rbg:1, 1, 1, 1
Rectangle:
pos:self.pos
size:self.size
GridLayout:
size_hint: (0.3,0.2)
cols:1
GridLayout:
cols:2
Label:
text:"no"
TextInput:
text: "50"
Label:
text:"rbr"
TextInput:
text: "100"
Button:
text:"calc"
把canvas:
指令放在孩子面前。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.