kivy

kivy戦記(4-2) とりあえず解決

この記事は約5分で読めます。

前回のエラー結果より、python側にOpeSCNのclassの宣言がないことが原因なので、入れてみる。

filelist.py


from kivy.uix.screenmanager import Screen
from kivy.app import App
from kivy.lang import Builder
from kivy.core.window import Window
from kivy.uix.widget import Widget
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.popup import Popup
from kivy.uix.treeview import TreeView, TreeViewLabel, TreeViewNode
from kivy.uix.label import Label
from kivy.properties import ObjectProperty
from kivy.core.text import LabelBase, DEFAULT_FONT
from kivy.resources import resource_add_path
# 日本語フォント設定
resource_add_path('./fonts')
LabelBase.register(DEFAULT_FONT, 'ipaexg.ttf')
class OpeSCN(Widget):
    pass
class AllSCN(Widget):
    pass
class FilelistApp(App):
    def build(self):
        return AllSCN()
if __name__ == '__main__':
    FilelistApp().run()

filelist.kv


<AllSCN>:
    BoxLayout:
        size: root.size
<OpeSCN>:
    BoxLayout:
        Label:
            text: 'aaaa'
            canvas.before:
                Color:
                    rgba: 0,.5,0,1
                Rectangle:
                    pos: self.pos
                    size: self.size
AllSCN:
    OpeSCN:

これで実行すると、再び黒い画面が。

今までの経緯からして、kvファイルのOpeSCNの部分を変更したら良くなるはずだ。

こうして、OpeSCN:を<AllSCN>:の下に移動させた。


<AllSCN>:
    BoxLayout:
        size: root.size
    OpeSCN:
<OpeSCN>:
    BoxLayout:
        Label:
            text: 'aaaa'
            canvas.before:
                Color:
                    rgba: 0,.5,0,1
                Rectangle:
                    pos: self.pos
                    size: self.size
AllSCN:

 

これで実行すると、

なんか凄いデジャブがあるな。

そこで、AllSCNの背景を青くしてみた。


<AllSCN>:
    BoxLayout:
        size: root.size
        canvas.before:
            Color:
                rgba: 0,0,.5,1
            Rectangle:
                pos: self.pos
                size: self.size
        OpeSCN:
<OpeSCN>:
    BoxLayout:
        Label:
            text: 'aaaa'
            canvas.before:
                Color:
                    rgba: 0,.5,0,1
                Rectangle:
                    pos: self.pos
                    size: self.size
AllSCN:

そこで、OpeSCNの画面を広げてみた。


<AllSCN>:
    BoxLayout:
        size: root.size
        canvas.before:
            Color:
                rgba: 0,0,.5,1
            Rectangle:
                pos: self.pos
                size: self.size
        OpeSCN:
<OpeSCN>:
    BoxLayout:
        size: root.size
        Label:
            text: 'aaaa'
            canvas.before:
                Color:
                    rgba: 0,.5,0,1
                Rectangle:
                    pos: self.pos
                    size: self.size
AllSCN:

これでOpeSCNについては、ほぼ解決したと思われる。

タイトルとURLをコピーしました