우선 지난번과 같이 kivy가 생성된 venv 디렉토리에 별도의 디렉토리를 만들고 main.py에 아래와 같이 붙여 넣고 실행해보자.
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.graphics import Color, Ellipse
class MyPaintWidget(Widget):
def on_touch_down(self, touch):
with self.canvas:
Color(1, 1, 0)
d = 30.
Ellipse(pos=(touch.x - d / 2, touch.y - d / 2), size=(d, d))
class MyPaintApp(App):
def build(self):
return MyPaintWidget()
if __name__ == '__main__':
MyPaintApp().run()
검은 색 그림판이 생성되고 마우스로 클릭하면 노란 점이 하나씩 생긴다.
색깔을 바꾸고 싶으면 딱봐도 색깔을 나타내는 Color 부분을 RGB중 원하는 형태로 변경하면 된다. 하지만 클릭할떄마다 자동으로 색깔이 변경되게 하기 위해 RGB값을 random() 으로 넣으면 클릭할때마다 색깔이 바뀐다.
from random import random
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.graphics import Color, Ellipse, Line
class MyPaintWidget(Widget):
def on_touch_down(self, touch):
color = (random(), random(), random())
with self.canvas:
Color(*color)
d = 30.
Ellipse(pos=(touch.x - d / 2, touch.y - d / 2), size=(d, d))
touch.ud['line'] = Line(points=(touch.x, touch.y))
def on_touch_move(self, touch):
touch.ud['line'].points += [touch.x, touch.y]
class MyPaintApp(App):
def build(self):
return MyPaintWidget()
if __name__ == '__main__':
MyPaintApp().run()
이제 실행해보면 클릭할때마다 색깔이 바뀌게 된다.
그림판이니 지우는 것도 필요할 것이다. 지우는 기능을 추가해보자.
from random import random
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.button import Button
from kivy.graphics import Color, Ellipse, Line
class MyPaintWidget(Widget):
def on_touch_down(self, touch):
color = (random(), 1, 1)
with self.canvas:
Color(*color, mode='hsv')
d = 30.
Ellipse(pos=(touch.x - d / 2, touch.y - d / 2), size=(d, d))
touch.ud['line'] = Line(points=(touch.x, touch.y))
def on_touch_move(self, touch):
touch.ud['line'].points += [touch.x, touch.y]
class MyPaintApp(App):
def build(self):
parent = Widget()
self.painter = MyPaintWidget()
clearbtn = Button(text='Clear')
clearbtn.bind(on_release=self.clear_canvas)
parent.add_widget(self.painter)
parent.add_widget(clearbtn)
return parent
def clear_canvas(self, obj):
self.painter.canvas.clear()
if __name__ == '__main__':
MyPaintApp().run()
아래 Clear 버튼을 누르면 그림판 내용이 지워지게 된다.
여기까지가 Kivy 그림판에 대한 대략적인 튜토리얼 내용이다.
이제 어떤 App을 만들지 고민해보아야 한다.
아래 Kivy API나 Kivy로 만든 App들을 보면서 어떤 App을 만들지 고민해봐야지..
https://kivy.org/doc/stable/api-kivy.html
Kivy framework — Kivy 2.1.0 documentation
Kivy framework Kivy is an open source library for developing multi-touch applications. It is cross-platform (Linux/OSX/Windows/Android/iOS) and released under the terms of the MIT License. It comes with native support for many multi-touch input devices, a
kivy.org
Kivy: Cross-platform Python Framework for NUI
Open source Python framework for rapid development of applications that make use of innovative user interfaces, such as multi-touch apps.
kivy.org
'Python > Do Something' 카테고리의 다른 글
python(django) - 장고로 웹페이지 만들기 (2) (0) | 2023.01.17 |
---|---|
python(django) - 장고로 웹페이지 만들기 (1) (0) | 2023.01.17 |
python(kivy) - kivy로 안드로이드 App 만들어보기 (2) (0) | 2023.01.17 |
python(kivy) - kivy로 안드로이드 App 만들어보기 (1) (0) | 2023.01.17 |
python - Appium 으로 스마트폰 무선 연동하고 컨트롤하기 - 6 (0) | 2023.01.16 |