Kivy Tutorial1

Python

—————————-

チュートリアル1 [https://qiita.com/dario_okazaki/items/7892b24fcfa787faface]

—————————-

エラー

raise FactoryException(‘Unknown class <%s>’ % name)

kivy.factory.FactoryException: Unknown class <Rectangles>

原因

Rectanglesという不明なクラスがある、と言われている

test.kvのRectangleがRectanglesになっていた

事前準備

pip install kivy

python -m pip install “kivy[base]” kivy_examples

python -m pip install –upgrade pip wheel setuptools

main.pyと同階層にfontsフォルダを作成してそこにmplus-2c-regular.ttfを入れること

main.py

#-*- coding: utf-8 -*-

from kivy.config import Config

from kivy.app import App

from kivy.uix.widget import Widget

from kivy.properties import StringProperty #buttonClickedで値が変わったから

from kivy.properties import ListProperty #buttonClickedで色を変更するから

from kivy.core.text import LabelBase, DEFAULT_FONT #フォント変更

from kivy.resources import resource_add_path

#ウィンドウサイズの変更

Config.set(‘graphics’, ‘width’, ‘640’)

Config.set(‘graphics’, ‘height’, ‘480’)

#フォントの変更

resource_add_path(‘./fonts’)

LabelBase.register(DEFAULT_FONT, ‘mplus-2c-regular.ttf’)

#画像の変更

resource_add_path(‘./image’)

class TextWidget(Widget):

text = StringProperty()

color = ListProperty([1,1,1,1])

source = StringProperty(‘./image/000.jpg’)

def __init__(self, **kwargs):

super(TextWidget, self).__init__(**kwargs)

self.text = ‘start’

def buttonClicked(self):

self.text = ‘GOOD MORNING’

self.color = [1,0,0,1]

self.source = ‘./image/111.jpg’

def buttonClicked2(self):

self.text = ‘HELLO’

self.color = [0,1,0,1]

self.source = ‘222.jpg’

def buttonClicked3(self):

self.text = ‘GOOD NIGHT’

self.color = [0,0,1,1]

self.source = ‘333.jpg’

def buttonClicked4(self):

self.text = self.ids[‘text_box’].text

class TestApp(App):

def __init__(self, **kwargs):

super(TestApp, self).__init__(**kwargs)

self.title = ‘ウィンドウの名前’

if __name__ == ‘__main__’:

TestApp().run()

test.kv

#-*- coding: utf-8 -*-

TextWidget:

<MyButton@Button>:

font_size: 30

<TextWidget>:

BoxLayout:

orientation: ‘vertical’

size: root.size

TextInput:

id: text_box

size_hint_y: 0.2

font_size: 30 #font-sizeだとエラー

focus: True #小文字のtrueだとBuilderExceptionが発生する

on_text_validate: root.buttonClicked4()

Image:

source: root.source

size_hint_y: 0.3

Label:

id: label1

text: root.text

color: root.color

font_size: 50

size_hint_y: 0.2 #デフォルトで1

BoxLayout:

size_hint_y: 0.3

padding: 20,20,20,20

MyButton:

id: button1

text: “朝”

color: 0,1,0,1 #RGBAの順

#font_size: 30

on_press: root.buttonClicked()

MyButton:

id: button2

text: ‘昼’

#font_size: 30

on_press: root.buttonClicked2()

MyButton:

id: button3

text: ‘夜’

#font_size: 30

on_press: root.buttonClicked3()

MyButton:

id: button4

text: ‘OK’

#font-size: 30

on_press: root.buttonClicked4()

BACK