Раньше я успешно интегрировал байты файлов 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, если нет способа использовать его без ссылки на файл.