Интеграция шахматной SVG текстуры в живой объект - PullRequest
0 голосов
/ 10 октября 2019

Раньше я успешно интегрировал байты файлов png в изображение kivy, используя ссылку obj.texture. В настоящее время я пытаюсь сделать это со строкой chess.svg, но не добился большого успеха. MWE ниже:

# dependencies

import kivy

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

from kivy.uix.image import Image as UIXImage
from kivy.uix.behaviors.button import ButtonBehavior
from kivy.properties import StringProperty

import chess
import chess.svg


# chess-related vars

myimg = str( chess.svg.board( board=chess.Board() ) ) #svg code


# custom chess-board obj

class ChessBoard(ButtonBehavior, UIXImage):

    boardimg = StringProperty('')

    def __init__(self,boardimg,**kwargs):
        super(ChessBoard,self).__init__(**kwargs)
        self.boardimg = boardimg
        self.render()

    def render(self,*args):

        print(self.boardimg) # TODO manipulate myimg into a texture-rippable obj

        # self.texture = myimg.texture

        pass


# build the app

class MyApp(App):
    def build(self):
        return ChessBoard(myimg)

if __name__ == '__main__':
    MyApp().run()

Любая идея о том, как сделать эту работу, будет высоко оценена, так как она кажется пробелом в наших коллективных знаниях сообщества (например, см .: Показать шахматную доску от svg). файл в кивом питоне ). Одна из моих целей разработки с этим кодом - сделать полную интеграцию без необходимости сохранять какие-либо файлы изображений локально, так что исключается возможность SvgWidget в kivy, если нет способа использовать его без ссылки на файл.

...