Kivy Tutorial1
—————————-
チュートリアル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