Ken*_*eno 4 python user-interface overlay kivy
我正在尝试制作一个带有背景网格和顶层交互元素的应用程序,我在通过 python 覆盖第二层时遇到了麻烦,所以就像标题所说,有没有办法在 Kivy 中覆盖 2 个或更多布局?
这就是我要找的
将opacity
第一层/布局的 设为 0.5
\n\n\n\n\n不透明度
\n\n小部件及其所有子部件的不透明度。
\n\nopacity 属性控制小部件及其子部件的不透明度。\n 请注意,它\xe2\x80\x99 是一个累积属性:该值\n 乘以当前的全局不透明度,并将结果应用于\n 当前的上下文颜色。
\n\n...
\n\nopacity 是一个NumericProperty,默认为 1.0。
\n
\n\n\n\n\n点:列表
\n\n格式为 (x1, y1, x2, y2\xe2\x80\xa6) 的点列表
\n\n用于获取/设置直线点的属性
\n\n警告
\n\n这将始终从新的点列表重建整个图形。CPU 可能非常昂贵。
\n
\n\n\n圆圈
\n\n使用此属性构建一个圆,而不计算点。\n 您只能设置此属性,而不能获取它。
\n\n参数必须是 (center_x, center_y, radius,\n angle_start, angle_end, snippets) 的元组:
\n\n\n
\n\n- center_x和center_y表示圆心
\n- radius 表示圆的半径
\n- (可选)angle_start 和angle_end 的单位是度。默认值为 0 和 360。
\n- (可选)segments 是椭圆的精度。默认值是根据角度之间的范围计算的。
\n请注意,是否关闭圆圈由您决定。
\n
from kivy.base import runTouchApp\nfrom kivy.core.window import Window\nfrom kivy.uix.screenmanager import Screen\nfrom kivy.uix.boxlayout import BoxLayout\nfrom kivy.graphics import Color, Line\nfrom kivy.metrics import dp\n\nWindow.clearcolor = (1, 1, 1, 1)\n\n\nclass Overlay2Layouts(Screen):\n\n def __init__(self, **kwargs):\n super(Overlay2Layouts, self).__init__(**kwargs)\n self.size = Window.size\n\n layout1 = BoxLayout(opacity=0.5)\n with layout1.canvas:\n Color(1, 0, 0, 1) # red colour\n Line(points=[self.center_x, self.height / 4, self.center_x, self.height * 3/4], width=dp(2))\n Line(points=[self.width * 3/ 4, self.center_y, self.width /4, self.center_y], width=dp(2))\n\n layout2 = BoxLayout()\n with layout2.canvas:\n Color(0, 0, 0, 1) # black colour\n Line(circle=[self.center_x, self.center_y, 190], width=dp(2))\n\n self.add_widget(layout1)\n self.add_widget(layout2)\n\n\nif __name__ == "__main__":\n runTouchApp(Overlay2Layouts())\n
Run Code Online (Sandbox Code Playgroud)\n\nfrom kivy.lang import Builder\nfrom kivy.base import runTouchApp\nfrom kivy.core.window import Window\n\nWindow.clearcolor = (1, 1, 1, 1)\n\nrunTouchApp(Builder.load_string(\'\'\'\n#:kivy 1.11.0\n\nScreen:\n BoxLayout:\n opacity: 0.5\n canvas.before:\n Color:\n rgba: 1, 0, 0, 1\n Line:\n width: dp(2.)\n points: [self.center_x, self.height / 4, self.center_x, self.height * 3/4]\n Line:\n width: dp(2.)\n points: [root.width * 3/ 4, self.center_y, root.width /4, self.center_y]\n BoxLayout:\n canvas.before:\n Color:\n rgba: 1, 0, 0, 1\n Line:\n width: dp(2.)\n circle: (root.center_x, root.center_y, 190)\n\n\'\'\'))\n
Run Code Online (Sandbox Code Playgroud)\n\n