Rumah > pembangunan bahagian belakang > Tutorial Python > Bekerja dengan butang menggunakan Python Kivy dan fail .kv

Bekerja dengan butang menggunakan Python Kivy dan fail .kv

WBOY
Lepaskan: 2023-09-05 18:17:11
ke hadapan
1768 orang telah melayarinya

Mereka bentuk antara muka pengguna interaktif untuk aplikasi Kivy adalah mudah dan berkesan dengan menggunakan butang dalam fail .kv. Kivy ialah rangka kerja Python untuk membina aplikasi merentas platform yang menggunakan jenis fail .kv untuk memisahkan penampilan visual dan kefungsian butang daripada kod asas. Bahasa pengisytiharan fail .kv digunakan untuk menyediakan sifat butang seperti teks, saiz dan pengendali acara, membolehkan pembangun mencipta antara muka pengguna yang ringkas, padat dan boleh diurus. Pembangun boleh menukar penampilan dan kefungsian butang dengan mudah dengan menambahkannya terus ke fail .kv tanpa menambah kandungan berlebihan dalam kod Python

Topik yang dibincangkan

  • Ciri Python Kivy

  • Pengenalan butang

  • Reka bentuk apl dengan Kivy

Ciri Python Kivy

  • Rangka Kerja Antara Muka Pengguna (UI): Untuk mencipta UI interaktif, Kivy menyediakan pelbagai widget dan pengurus susun atur untuk memenuhi pelbagai keperluan. Ia serasi dengan pelbagai teknologi input, termasuk gerak isyarat sentuh, klik tetikus, acara papan kekunci dan banyak lagi

  • Sokongan Pelbagai Sentuhan: Kivy sesuai untuk peranti berdaya sentuh seperti telefon pintar dan tablet, kerana ia direka untuk mengurus interaksi berbilang sentuhan.

  • Grafik dan Animasi: Terima kasih kepada keupayaan grafik hebat Kivy, pembangun boleh mencipta apl yang cantik dengan animasi dan peralihan yang lancar.

  • Pembangunan Merentas Platform: Memandangkan aplikasi Python Kivy sememangnya merentas platform, pembangun hanya perlu menulis kod sekali untuk menggunakannya merentas berbilang platform tanpa membuat perubahan besar.

  • Sumber Terbuka dan Didorong Komuniti: Komuniti pembangun dan sukarelawan yang berkembang maju terus menambah baik dan mengembangkan projek sumber terbuka Kivy.

  • Mudah dipelajari: Sintaks Kivy adalah ringkas dan intuitif, menjadikannya mudah difahami terutamanya untuk pembangun Python. Kedua-dua pemula dan pembangun berpengalaman boleh menggunakannya kerana ia memerlukan pendekatan deklaratif apabila membina antara muka pengguna

Butang pengenalan

Dalam Kivy, widget butang ialah widget interaktif yang merekodkan input pengguna dan memulakan tindakan atau acara tertentu dalam program Python. Mereka membenarkan pengguna berinteraksi dengan aplikasi dan merupakan komponen utama antara muka pengguna. Dalam kebanyakan aplikasi, butang bertindak balas kepada sentuhan, klik tetikus, tindakan papan kekunci, dsb., dan mempunyai perwakilan visual seperti teks atau imej

Kelas Button ialah komponen perpustakaan Kivy dan digunakan untuk mewakili butang dalam Python. Ia boleh diisytiharkan dalam fail .kv menggunakan sintaks deklaratif atau secara pemrograman menggunakan kod Python. Dengan menggunakan pelbagai sifat dan pengendali acara kelas Button, pembangun boleh menukar rupa dan tingkah laku butang agar lebih sesuai dengan keperluan program dan membuat keputusan termaklum serta merancang perkara secara berbeza.

Langkah

Pasang Kivyy: Sebelum anda mula mereka bentuk aplikasi anda, pastikan anda telah memasang Kivy pada komputer anda. Menggunakan pip anda boleh memasangnya:

pip install kivy
Salin selepas log masuk

Import modul yang diperlukan: Import modul yang berkaitan daripada Kivy ke dalam skrip Python anda.

from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout
Salin selepas log masuk

Buat pengendali acara butang dan kelas aplikasi Kivy: Buat kaedah yang akan dipanggil apabila butang ditekan dan tentukan kelas yang diperoleh daripada Apl.

class MyApp(App):
   def build(self):
      layout = BoxLayout(orientation='vertical')
      button = Button(text='Click Me!', on_press=self.on_button_press)
      layout.add_widget(button)
      return layout

   def on_button_press(self, instance):
      print("Button was pressed!")
Salin selepas log masuk

Jalankan aplikasi Kivy

if __name__ == "__main__":
   MyApp().run()
Salin selepas log masuk

Laksanakan skrip

python your_script.py
Salin selepas log masuk

Reka bentuk apl dengan Kivy

Terima kasih kepada sintaks intuitifnya, Python Kivy membolehkan pembangun dengan pelbagai kemahiran untuk mencipta aplikasi merentas platform dinamik dengan mudah. Ia memberikan pengalaman pengguna yang menarik merentasi platform berbeza dengan sokongan berbilang sentuhan, perpustakaan widget yang kaya dan ciri animasi yang memikat. Oleh sebab itu, Kivy digunakan secara meluas untuk mencipta pelbagai aplikasi inovatif yang melayani pelbagai industri dan sektor.

Pembangunan Permainan Pingpong

Permainan arked klasik Pong ialah titik permulaan yang bagus untuk mempelajari kemahiran pengaturcaraan permainan Python Kivy. Dengan rangka kerja sumber terbuka Kivy, pembangun boleh mencipta program dan permainan merentas platform dengan mudah, dan Pong menyediakan peluang yang sangat baik untuk menyiasat potensinya untuk menjana pengalaman permainan interaktif. Dua pemain bersaing untuk mata dengan memanipulasi raket mereka untuk melantun bola ke depan dan ke belakang semasa bola memecut.

Langkah

  • Sediakan persekitaran: Pasang mana-mana perpustakaan yang diperlukan, termasuk Kivy.

  • Reka bentuk antara muka permainan: Untuk menentukan susun atur permainan (termasuk raket, bola dan paparan skor), cipta fail Kivy.kv.

  • Buat Kod Python: Laksanakan logik permainan dalam Python untuk mengendalikan pergerakan papan, perlanggaran bola dan penjejakan skor.

  • Tetapkan Acara Permainan: Gunakan jam Kivy untuk mengemas kini keadaan permainan dan mengendalikan acara seperti pergerakan bola dan pengesanan perlanggaran

  • Tambah Kawalan Permainan: Laksanakan peristiwa sentuh atau papan kekunci untuk mengawal bezel

  • Menguji dan Menyahpepijat: Jalankan permainan, uji fungsinya dan buat pelarasan yang diperlukan.

Buat dua fail: fail Python bernama main.py dan fail Kivy bernama pong.kv

Example

的中文翻译为:

示例

main.py文件

from kivy.app import App
from kivy.uix.widget import Widget
from kivy.properties import (
   NumericProperty, ReferenceListProperty, ObjectProperty
)
from kivy.vector import Vector
from kivy.clock import Clock


class PongPaddle(Widget):
   score = NumericProperty(0)

   def bounce_ball(self, ball):
      if self.collide_widget(ball):
         vx, vy = ball.velocity
         offset = (ball.center_y - self.center_y) / (self.height / 2)
         bounced = Vector(-1 * vx, vy)
         vel = bounced * 1.1
         ball.velocity = vel.x, vel.y + offset


class PongBall(Widget):
   velocity_x = NumericProperty(0)
   velocity_y = NumericProperty(0)
   velocity = ReferenceListProperty(velocity_x, velocity_y)

   def move(self):
      self.pos = Vector(*self.velocity) + self.pos


class PongGame(Widget):
   ball = ObjectProperty(None)
   player1 = ObjectProperty(None)
   player2 = ObjectProperty(None)

   def serve_ball(self, vel=(4, 0)):
      self.ball.center = self.center
      self.ball.velocity = vel

   def update(self, dt):
      self.ball.move()

      self.player1.bounce_ball(self.ball)
      self.player2.bounce_ball(self.ball)

      if (self.ball.y < self.y) or (self.ball.top > self.top):
         self.ball.velocity_y *= -1

      if self.ball.x < self.x:
         self.player2.score += 1
         self.serve_ball(vel=(4, 0))
      if self.ball.right > self.width:
         self.player1.score += 1
         self.serve_ball(vel=(-4, 0))

   def on_touch_move(self, touch):
      if touch.x < self.width / 3:
         self.player1.center_y = touch.y
      if touch.x > self.width - self.width / 3:
         self.player2.center_y = touch.y


class PongApp(App):
   def build(self):
      game = PongGame()
      game.serve_ball()
      Clock.schedule_interval(game.update, 1.0 / 60.0)
      return game


if __name__ == '__main__':
   PongApp().run()
Salin selepas log masuk

pong.kv 文件

#:kivy 1.0.9

<PongBall>:
   size: 50, 50 
   canvas:
      Ellipse:
         pos: self.pos
         size: self.size        

<PongPaddle>:
   size: 25, 200
   canvas:
      Rectangle:
         pos: self.pos
         size: self.size

<PongGame>:
   ball: pong_ball
   player1: player_left
   player2: player_right
   
   canvas:
      Rectangle:
         pos: self.center_x - 5, 0
         size: 10, self.height
   
   Label:
      font_size: 70  
      center_x: root.width / 4
      top: root.top - 50
      text: str(root.player1.score)
      
   Label:
      font_size: 70  
      center_x: root.width * 3 / 4
      top: root.top - 50
      text: str(root.player2.score)
   
   PongBall:
      id: pong_ball
      center: self.parent.center
      
   PongPaddle:
      id: player_left
      x: root.x
      center_y: root.center_y
      
   PongPaddle:
      id: player_right
      x: root.width - self.width
      center_y: root.center_y
Salin selepas log masuk

输出

使用Python Kivy和.kv文件处理按钮的工作

结论

Python Kivy 作为开源框架在创建 Pong 游戏中的无缝实现就是其有效性的一个例子。事实证明,从头开始创建游戏的过程是一次无价的学习机会,让我们对用户界面设计、Python 事件处理和基本游戏开发原理有了深入的了解。

Atas ialah kandungan terperinci Bekerja dengan butang menggunakan Python Kivy dan fail .kv. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan