将chesssvg纹理集成到kivy obj中

2024-04-25 09:19:04 发布

您现在位置:Python中文网/ 问答频道 /正文

以前,我使用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)。我对这段代码的一个设计目标是在不必在本地保存任何图像文件的情况下完成整个集成,这样就排除了kivy的SvgWidget,除非有方法在不引用文件的情况下使用它


Tags: 文件fromsvgimportselfboardobjapp