1

以前,我使用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。

4

0 回答 0