Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

เริ่มต้นกับ Kivy: Framework GUI ข้ามแพลตฟอร์มสำหรับ Python

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 แต่จะทำให้โค้ดสะอาดและบำรุงรักษาง่ายขึ้นในระยะยาว