Ich bin in den ersten Tag des Python-Adventskalenders 2016 gesprungen. Es ist der erste Tag, also sollte jeder es sehen ... http://qiita.com/advent-calendar/2016/python
Alles scheint eine Ameise zu sein, also spreche ich über Kivy. (Eine kleine alte Geschichte vor ungefähr 6 Monaten)
Kivys Tutorial enthält ein Beispiel einer einfachen Mal-App. https://kivy.org/docs/tutorials/firstwidget.html Diese Mal-App ändert die Zeichnungsfarbe jedes Mal, wenn Sie zeichnen.
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))
Selbst im Quellcode können Sie sehen, dass color = (random (), 1, 1) die Farbe jedes Mal zufällig setzt. Bei der Ausführung ist dies wie in der Abbildung unten dargestellt.
Ich wollte die Farbe jedoch trotzdem selbst ändern, deshalb habe ich sie ein wenig erweitert. Kivy hat ein ColorPicker-Widget, das experimentell ist, also werde ich es verwenden. https://kivy.org/docs/api-kivy.uix.colorpicker.html
Übrigens, dieser Typ
Ich habe das Programm wie folgt umgeschrieben und Kv als Slapstick geschrieben.
main.py
#from random import random
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.button import Button
from kivy.uix.popup import Popup
from kivy.uix.colorpicker import ColorPicker
from kivy.graphics import Color, Ellipse, Line
class ClearButton(Button):
pass
class ColorChangeButton(Button):
pass
class MyPopup(Popup):
pass
class MyPaintWidget(Widget):
color = [1, 1, 1, 1]
def on_touch_down(self, touch):
with self.canvas:
Color(rgba=(self.color))
d = 5
Ellipse(pos=(touch.x - d / 2, touch.y - d / 2), size=(d, d))
touch.ud['line'] = Line(pos=(touch.x, touch.y))
def on_touch_move(self, touch):
touch.ud['line'].points += [touch.x, touch.y]
def clear_canvas(self,*largs):
self.canvas.clear()
def open_popup(self):
popup = MyPopup()
popup.open()
class MyPaintApp(App):
def build(self):
parent = Widget()
self.painter = MyPaintWidget()
clearbtn = ClearButton()
colorbtn = ColorChangeButton()
parent.add_widget(self.painter)
parent.add_widget(colorbtn)
parent.add_widget(clearbtn)
return parent
if __name__ == '__main__':
MyPaintApp().run()
mypaint.kv
<ClearButton>:
Button:
text: 'Clear'
right: root.right
top: root.top
width: 100
height: 100
on_release: app.painter.canvas.clear()
<ColorChangeButton>:
Button:
text: 'Color'
right: root.right
top: root.top
width: 100
height: 100
on_release: app.painter.open_popup()
<MyPopup>:
title: 'Color Select'
size_hint: None, None
size: 400, 400
BoxLayout:
orientation: 'vertical'
ColorPicker:
id: picker
color: app.painter.color
on_color: app.painter.color = self.color
Button:
size_hint_y: None
height: 60
text: 'Change'
on_press: root.dismiss()
ColorPicker wurde in Kv verwendet. Wie man es benutzt ist so.
<MyPopup>:
title: 'Color Select'
size_hint: None, None
size: 400, 400
BoxLayout:
orientation: 'vertical'
ColorPicker:
id: picker
color: app.painter.color
on_color: app.painter.color = self.color
Ausführungsergebnis wie folgt
Die Farbe hat sich sicher geändert. Es ist eine gute Erinnerung, dass ich mit wenig Informationen über ColorPicker zu kämpfen hatte.
Der Quellcode ist auf Github. https://github.com/pyKy/Kivy-studies/tree/master/5th
Das ist alles über Kivy. Ich möchte ein bisschen mehr tun ...