Kivy เป็น Framework GUI โอเพนซอร์สสำหรับ Python ที่ช่วยสร้างแอปพลิเคชันข้ามแพลตฟอร์มได้ทั้ง Windows, Linux, macOS, Android และ iOS ใช้ OpenGL ES 2 สำหรับกราฟิกส์ ทำให้เหมาะสำหรับแอปที่ต้องการ UI สวยงามและการโต้ตอบแบบ Multi-touch
คู่มือการติดตั้ง
Windows
# ติดตั้ง Dependencies python -m pip install --upgrade pip setuptools python -m pip install docutils pygments pypiwin32 kivy_deps.sdl2 kivy_deps.glew python -m pip install kivy_deps.gstreamer python -m pip install kivy_deps.angle # ติดตั้ง Kivy python -m pip install kivy
Linux (Ubuntu/Debian)
# เพิ่ม PPA และติดตั้ง sudo add-apt-repository ppa:kivy-team/kivy sudo apt update sudo apt install python3-kivy
macOS
brew install pkg-config sdl2 sdl2_image sdl2_ttf sdl2_mixer gstreamer pip install kivy
ตัวอย่างแอปพลิเคชันแรก: Hello World
import kivy
kivy.require('2.1.0') # ระบุเวอร์ชันขั้นต่ำ
from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout
class MyApp(App):
def build(self):
layout = BoxLayout(orientation='vertical', padding=20, spacing=10)
label = Label(
text='สวัสดีครับ Kivy!',
font_size=24,
size_hint=(1, 0.5)
)
btn = Button(
text='กดปุ่มดู',
font_size=20,
size_hint=(1, 0.3)
)
btn.bind(on_press=self.on_button_press)
layout.add_widget(label)
layout.add_widget(btn)
return layout
def on_button_press(self, instance):
instance.text = 'กดแล้ว!'
print('ปุ่มถูกกด')
if __name__ == '__main__':
MyApp().run()
โครงสร้างพื้นฐานของ Kivy App
App- คลาสหลักของแอปพลิเคชันWidget- องค์ประกอบ UI พื้นฐาน (Button, Label, TextInput, etc.)Layout- จัดการตำแหน่ง Widget (BoxLayout, GridLayout, FloatLayout, etc.)Event Binding- ผูกฟังก์ชันกับเหตุการณ์ (on_press, on_touch_down, etc.)KV Language- ภาษา Declarative สำหรับแยก UI Logic ออกจาก Python Code
ตัวอย่างใช้ KV Language (แนะนำสำหรับโปรเจกต์จริง)
main.py
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
class MyLayout(BoxLayout):
def on_button_press(self):
self.ids.my_label.text = 'กดแล้ว!'
class MyApp(App):
def build(self):
return MyLayout()
if __name__ == '__main__':
MyApp().run()
myapp.kv (ชื่อไฟล์ต้องตรงกับชื่อคลาส App ตัวเล็ก + .kv)
<MyLayout>:
orientation: 'vertical'
padding: 20
spacing: 10
Label:
id: my_label
text: 'สวัสดีครับ Kivy!'
font_size: 24
size_hint: 1, 0.5
Button:
text: 'กดปุ่มดู'
font_size: 20
size_hint: 1, 0.3
on_press: root.on_button_press()
สรุป
Kivy เป็นตัวเลือกที่ยอดเยี่ยมสำหรับการพัฒนา GUI แบบ Cross-platform ด้วย Python โดยเฉพาะแอปที่ต้องการ Touch Interface และกราฟิกส์ที่สมูธ แม้จะมี Learning Curve สำหรับ KV Language แต่จะทำให้โค้ดสะอาดและบำรุงรักษาง่ายขึ้นในระยะยาว