Python ve Kivy ile Uygulama Geliştirme – 10.1

Categories python kivyPosted on
teknopenguen kivy uygulama
0 0 vote
Article Rating

Önümüzdeki iki dersimizde bir paint uygulaması yapacağız. Ancak bu seferki uygulamamızda çizeceğimiz şekli ve hangi renkte çizebileceğimizi belirleyebileceğiz. Uzatmadan kodlarımızı görelim ve üzerine konuşalım.

Paint.py içeriği:

  1. <code>
  2. from kivy.app import App
  3. from kivy.uix.floatlayout import FloatLayout
  4. from kivy.uix.boxlayout import BoxLayout
  5. from kivy.graphics import Line,Color,Rectangle,Ellipse
  6. from kivy.uix.button import Button
  7.  
  8. class yerlesim(FloatLayout):
  9. pass
  10.  
  11. class secim(BoxLayout):
  12.  
  13. def renk_kirmizi(self):
  14. global renk
  15. renk = "kirmizi"
  16.  
  17. def renk_yesil(self):
  18. global renk
  19. renk = "yesil"
  20.  
  21. def renk_mavi(self):
  22. global renk
  23. renk = "mavi"
  24.  
  25. def sekil_kare(self):
  26. global sekil
  27. sekil = "kare"
  28.  
  29. def sekil_elips(self):
  30. global sekil
  31. sekil = "elips"
  32.  
  33. def sekil_cizgi(self):
  34. global sekil
  35. sekil = "cizgi"
  36.  
  37.  
  38. class cizim(BoxLayout):
  39.  
  40. global renk
  41. global sekil
  42.  
  43. renk = "beyaz"
  44. sekil = "cizgi"
  45.  
  46. def on_touch_down(self,touch):
  47.  
  48. with self.canvas:
  49. if renk == "kirmizi":
  50. Color(1,0,0)
  51. elif renk == "yesil":
  52. Color(0,1,0)
  53. elif renk == "mavi":
  54. Color(0,0,1)
  55. else:
  56. Color(1,1,1)
  57.  
  58. if sekil == "cizgi":
  59. touch.ud["Line"] = Line(points = (touch.x,touch.y))
  60. elif sekil == "kare":
  61. touch.ud["kare"] = Rectangle(pos = (touch.x,touch.y), size=(10,10))
  62. elif sekil == "elips":
  63. touch.ud["elips"] = Ellipse(pos = (touch.x,touch.y), size=(10,10))
  64.  
  65. def on_touch_move(self,touch):
  66.  
  67. if sekil == "cizgi":
  68. touch.ud["Line"].points += (touch.x,touch.y)
  69. elif sekil == "kare":
  70. touch.ud["kare"].pos = (touch.x,touch.y)
  71. elif sekil == "elips":
  72. touch.ud["elips"].pos = (touch.x,touch.y)
  73.  
  74.  
  75. class paint(App):
  76.  
  77. def build(self):
  78.  
  79. self.buton = Button(text = ("temizle"))
  80. self.buton.bind(on_press = self.temizle)
  81.  
  82. self.yerlesim = yerlesim()
  83.  
  84. self.secim = secim()
  85.  
  86. self.cizim = cizim()
  87.  
  88. self.secim.add_widget(self.buton)
  89. self.yerlesim.add_widget(self.cizim)
  90. self.yerlesim.add_widget(self.secim)
  91.  
  92.  
  93. return self.yerlesim
  94.  
  95. def temizle(self,obj):
  96.  
  97. self.cizim.canvas.clear()
  98.  
  99. if __name__ == "__main__":
  100.  
  101. paint().run()
  102.  
  103. <code>

Şimdi bu kodlarımızı açıklayalım. Burada kullanmak üzere 3 adet sınıf oluşturduk. Bunlardan yerleşim sınıfı; secim ve cizim sınıflarını üzerinde barındıran bir float layout. Secim sınıfı ise butonlarımızı barındıracak olan, boxlayout u miras almış diğer sınıfımız. Bu sınıfın dizaynını kv dosyamız ile yapacağız. Çizim sınıfımızı da çizim amaçlı sadece canvas için kullanacağız.

Burada dikkat edilmesi gereken nokta secim ve cizim sınıflarının yerleşim sınıfına nasıl eklendiğidir. add_widget ı kullanarak bunları yerleşim sınıfına dahil ettik build sınıfını inceleyerek öğrenebilirsiniz.

Bu uygulamada iki adet değişkenimiz var renk ve sekil.  Bu değişkenlerin değerlerini değiştirerek renk seçimini ve şekil seçimini sağlayacağız. Bu değişkenlerden cizim sınıfının canvasında nasıl yararlanıldığına dikkat edelim.

Bir sonraki dersimizde kv dosyasının içeriğine bakacağız.

 

guest
0 Yorum
Inline Feedbacks
View all comments