以前,我使用obj.texture
参考成功地将 png 文件的字节集成到 kivy 图像中。我目前正在尝试使用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()
任何有关如何完成这项工作的见解都将不胜感激,因为这似乎是我们集体社区知识的一个空白(例如,请参阅:Display chess board from svg file in kivy python)。我使用此代码的设计目标之一是无需在本地保存任何图像文件即可完成整个集成,因此SvgWidget
除非有办法在不引用文件的情况下使用它,否则可以排除 kivy。