Как использовать «меш» в файле KIVY вместо файла Python - PullRequest
0 голосов
/ 26 апреля 2019

Я пытаюсь нарисовать произвольную фигуру с помощью kivy, используя "mesh" в python. Я провел некоторое исследование по этому вопросу, но большая часть результата - просто написать код в файле python

Код из здесь и здесь показывает способ создания объекта сетки в файле python, но я обнаружил проблему при попытке перевести его в файл kivy

это код в моем основном файле (main.py):

from kivy.lang import Builder
from kivy.uix.screenmanager import Screen
from kivy.graphics import Mesh
from kivy.properties import ObjectProperty

class MainScreen(Screen):
    Mesh = ObjectProperty(None)

class TestApp(App):
    def build(self):
        return Builder.load_file("health.kv")

sample_app = TestApp()
sample_app.run()

и это код в моем файле kivy (test.kv):

<MainScreen>:
    name: "main"
    Mesh:
        vertices: [0, 0, 0, 0, 100, 0, 0, 0, 100, 100, 0, 0]
        indices: [0, 1, 2]

Ошибка выглядит следующим образом:

File "C:\Users\kelv1\AppData\Local\Programs\Python\Python37-32\lib\site-packages\kivy\uix\floatlayout.py", line 135, in add_widget
 widget.bind(
AttributeError: 'kivy.graphics.vertex_instructions.Mesh' object has no attribute 'bind'

Почему это происходит и как это решить ??

1 Ответ

0 голосов
/ 26 апреля 2019

Вы просто забыли положить это на холст.И я добавил режим triangle_fan, чтобы превратить его в полигон.Просто угадать, это то, что вы хотите.
Попробуйте это:

from kivy.app import App
from kivy.lang import Builder

KV = """

<MainScreen@Screen>:
    name: "main"
    canvas:
        Mesh:
            mode: "triangle_fan"
            vertices: [0, 0, 0, 0, 100, 0, 0, 0, 100, 100, 0, 0]
            indices: [0, 1, 2]

MainScreen:

"""


class MyApp(App):

    def build(self):
        return Builder.load_string(KV)


MyApp().run()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...