Kivy学习思路

第一阶段:环境搭建与第一个应用

目标
  • 安装 Kivy 环境。

  • 创建并运行第一个 Kivy 应用。

步骤
  1. 安装 Kivy: 使用 pip 安装 Kivy:

    bash复制

    pip install kivy
  2. 创建第一个应用: 编写一个简单的 Kivy 应用,显示一个按钮。

    Python复制

    from kivy.app import App
    from kivy.uix.button import Button
    
    class SimpleApp(App):
        def build(self):
            return Button(text='Hello, Kivy!')
    
    if __name__ == '__main__':
        SimpleApp().run()

    运行代码后,你会看到一个窗口,显示一个按钮,按钮上写着 "Hello, Kivy!" 。

第二阶段:学习基本组件与布局

目标
  • 掌握 Kivy 的基本组件(如 LabelButtonTextInput)。

  • 学习常用的布局方式(如 BoxLayoutGridLayout)。

示例代码
  1. 多个组件的简单应用

    Python复制

    from kivy.app import App
    from kivy.uix.label import Label
    from kivy.uix.textinput import TextInput
    from kivy.uix.button import Button
    from kivy.uix.boxlayout import BoxLayout
    
    class MultipleWidgetsApp(App):
        def build(self):
            layout = BoxLayout(orientation='vertical', padding=20, spacing=10)
            self.label = Label(text='Enter your name:')
            self.input = TextInput(hint_text='Type here')
            self.button = Button(text='Submit')
            self.button.bind(on_press=self.on_button_press)
            layout.add_widget(self.label)
            layout.add_widget(self.input)
            layout.add_widget(self.button)
            return layout
    
        def on_button_press(self, instance):
            name = self.input.text
            self.label.text = f'Hello, {name}!'
    
    if __name__ == '__main__':
        MultipleWidgetsApp().run()

    运行后,输入名字并点击按钮,标签会显示 "Hello, [你的名字]!" 。

  2. BMI 计算器

    Python复制

    from kivy.app import App
    from kivy.uix.boxlayout import BoxLayout
    from kivy.uix.label import Label
    from kivy.uix.textinput import TextInput
    from kivy.uix.button import Button
    from kivy.metrics import dp
    
    class BMIApp(App):
        def build(self):
            self.title = 'BMI Calculator'
    
            layout = BoxLayout(orientation='vertical', padding=dp(20), spacing=dp(20))
    
            title_label = Label(text='BMI Calculator', font_size=24, size_hint=(1, 0.1))
    
            weight_label = Label(text='Weight (kg):', size_hint=(0.4, None), height=dp(40), font_size=18)
            self.weight_input = TextInput(hint_text='Enter weight', multiline=False, size_hint=(0.6, None), height=dp(40), font_size=18)
    
            height_label = Label(text='Height (cm):', size_hint=(0.4, None), height=dp(40), font_size=18)
            self.height_input = TextInput(hint_text='Enter height', multiline=False, size_hint=(0.6, None), height=dp(40), font_size=18)
    
            calculate_button = Button(text='Calculate BMI', size_hint=(1, 0.15), font_size=20)
            calculate_button.bind(on_press=self.calculate_bmi)
    
            self.result_label = Label(text='', font_size=24, size_hint=(1, 0.2))
    
            layout.add_widget(title_label)
            layout.add_widget(weight_label)
            layout.add_widget(self.weight_input)
            layout.add_widget(height_label)
            layout.add_widget(self.height_input)
            layout.add_widget(calculate_button)
            layout.add_widget(self.result_label)
    
            return layout
    
        def calculate_bmi(self, instance):
            try:
                weight = float(self.weight_input.text)
                height = float(self.height_input.text) / 100
                bmi = weight / (height * height)
    
                if bmi < 18.5:
                    category = 'Underweight'
                elif bmi < 24.9:
                    category = 'Normal weight'
                elif bmi < 29.9:
                    category = 'Overweight'
                else:
                    category = 'Obesity'
                self.result_label.text = f'Your BMI: {bmi:.2f}\nCategory: {category}'
            except ValueError:
                self.result_label.text = 'Invalid input. Please enter valid numbers.'
    
    if __name__ == '__main__':
        BMIApp().run()

    运行后,输入体重和身高,点击按钮即可计算 BMI 并显示结果 。

第三阶段:事件处理与交互

目标
  • 学习如何处理用户交互事件(如按钮点击、文本输入)。

  • 掌握 Kivy 的事件绑定机制。

示例代码

Python复制

from kivy.app import App
from kivy.uix.button import Button

class EventApp(App):
    def build(self):
        button = Button(text='Click Me')
        button.bind(on_press=self.on_button_press)
        return button

    def on_button_press(self, instance):
        print("Button was pressed!")

if __name__ == '__main__':
    EventApp().run()

运行后,点击按钮会在控制台打印 "Button was pressed!" 。

第四阶段:使用 Kivy 语言(.kv 文件)

目标
  • 学习 Kivy 的 .kv 文件,用于分离界面和逻辑。

  • 掌握如何使用 .kv 文件定义布局和样式。

示例代码
  1. 创建 main.py

    Python复制

    from kivy.app import App
    from kivy.uix.boxlayout import BoxLayout
    
    class MyApp(App):
        def build(self):
            return BoxLayout()
    
    if __name__ == '__main__':
        MyApp().run()
  2. 创建 main.kv

    kv复制

    BoxLayout:
        orientation: 'vertical'
        padding: 20
        spacing: 10
    
        Label:
            text: 'Hello, Kivy!'
    
        Button:
            text: 'Click Me'

    运行后,你会看到一个窗口,包含一个标签和一个按钮 。

第五阶段:实战项目

目标
  • 综合运用所学知识,开发一个小型项目。

  • 掌握如何组织代码和调试。

示例项目
  1. 简单计算器

    Python复制

    from kivy.app import App
    from kivy.uix.boxlayout import BoxLayout
    from kivy.uix.label import Label
    from kivy.uix.button import Button
    
    class CalculatorApp(App):
        def build(self):
            layout = BoxLayout(orientation='vertical')
            self.label = Label(text='')
            layout.add_widget(self.label)
    
            buttons = [
                ('7', '8', '9', '/'),
                ('4', '5', '6', '*'),
                ('1', '2', '3', '-'),
                ('0', '.', '=', '+'),
            ]
    
            for row in buttons:
                for btn_text in row:
                    button = Button(text=btn_text, size_hint=(0.2, 0.1))
                    button.bind(on_press=self.on_button_press)
                    layout.add_widget(button)
    
            return layout
    
        def on_button_press(self, instance):
            if instance.text == '=':
                try:
                    result = str(eval(self.label.text))
                    self.label.text = result
                except Exception as e:
                    self.label.text = 'Error'
            else:
                self.label.text += instance.text
    
    if __name__ == '__main__':
        CalculatorApp().run()

    运行后,你可以使用按钮进行简单的数学运算 。

第六阶段:进阶与扩展

目标
  • 学习如何集成外部库(如 SQLite、OpenCV)。

  • 掌握 Kivy 的高级功能(如多窗口、音视频支持)。

示例代码
  1. 集成 SQLite

    Python复制

    from kivy.app import App
    from kivy.uix.boxlayout import BoxLayout
    from kivy.uix.label import Label
    from kivy.uix.textinput import TextInput
    import sqlite3
    
    class DatabaseApp(App):
        def build(self):
            layout = BoxLayout(orientation='vertical', padding=20, spacing=10)
            self.label = Label(text='Enter name:')
            self.input = TextInput(hint_text='Type here')
            self.button = Button(text='Save')
            self.button.bind(on_press=self.save_to_db)
            layout.add_widget(self.label)
            layout.add_widget(self.input)
            layout.add_widget(self.button)
            return layout
    
        def save_to_db(self, instance):
            name = self.input.text
            conn = sqlite3.connect('test.db')
            c = conn.cursor()
            c.execute("INSERT INTO users (name) VALUES (?)", (name,))
            conn.commit()
            conn.close()
            self.label.text = 'Data saved!'
    
    if __name__ == '__main__':
        DatabaseApp().run()

    运行后,输入名字并点击按钮,数据会被保存到 SQLite 数据库中 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值