使用Python编写的简单移动应用开发案例,基于Kivy框架的待办事项应用

以下是一个使用Python编写的简单移动应用开发案例,基于Kivy框架的待办事项应用。它允许用户添加、删除和标记任务为已完成。
以下为python源码

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.recycleview import RecycleView
from kivy.uix.button import Button
from kivy.uix.textinput import TextInput
from kivy.uix.checkbox import CheckBox
from kivy.uix.label import Label


class TodoApp(App):
    def build(self):
        self.tasks = []
        self.task_id = 0
        layout = BoxLayout(orientation='vertical')

        # 输入框和添加按钮
        input_layout = BoxLayout(orientation='horizontal', size_hint=(1, None), height=40)
        self.task_input = TextInput(hint_text='input new task')
        add_button = Button(text='add')
        add_button.bind(on_press=self.add_task)
        input_layout.add_widget(self.task_input)
        input_layout.add_widget(add_button)

        # 任务列表
        self.task_list = TaskList()

        layout.add_widget(input_layout)
        layout.add_widget(self.task_list)

        return layout

    def add_task(self, instance):
        task_text = self.task_input.text.strip()
        if task_text:
            self.tasks.append({'id': self.task_id, 'text': task_text, 'completed': False})
            self.task_id += 1
            self.task_list.refresh_tasks(self.tasks)
            self.task_input.text = ''


class TaskList(RecycleView):
    def __init__(self, **kwargs):
        super(TaskList, self).__init__(**kwargs)
        self.data = []

    def refresh_tasks(self, tasks):
        self.data = []
        for task in tasks:
            task_widget = {
                'viewclass': 'TaskItem',
                'text': task['text'],
                'completed': task['completed'],
                'id': task['id'],
                'on_press': lambda id=task['id']: self.toggle_task(id)
            }
            self.data.append(task_widget)
        self.refresh_from_data()

    def toggle_task(self, task_id):
        for task in App.get_running_app().tasks:
            if task['id'] == task_id:
                task['completed'] = not task['completed']
        self.refresh_tasks(App.get_running_app().tasks)


class TaskItem(BoxLayout):
    def __init__(self, **kwargs):
        super(TaskItem, self).__init__(**kwargs)
        self.orientation = 'horizontal'
        self.size_hint_y = None
        self.height = 40

        self.checkbox = CheckBox(active=kwargs.get('completed', False))
        self.checkbox.bind(active=lambda instance, value: self.update_task_status(value))
        self.label = Label(text=kwargs.get('text', ''))

        delete_button = Button(text='delete', size_hint_x=None, width=60)
        delete_button.bind(on_press=lambda instance: self.delete_task(kwargs.get('id')))

        self.add_widget(self.checkbox)
        self.add_widget(self.label)
        self.add_widget(delete_button)

    def update_task_status(self, completed):
        for task in App.get_running_app().tasks:
            if task['id'] == self.id:
                task['completed'] = completed
                self.label.color = (0.5, 0.5, 0.5, 1) if completed else (1, 1, 1, 1)

    def delete_task(self, task_id):
        app = App.get_running_app()
        app.tasks = [task for task in app.tasks if task['id'] != task_id]
        app.task_list.refresh_tasks(app.tasks)


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

使用说明:
确保已安装Kivy库。如果未安装,可以通过以下命令安装:
pip install kivy,
这里有个小解释:如果你用以上的语法无法安装kivy, 可以改为以下语法:
pip install kivy -i https://mirrors.aliyun.com/pypi/simple/
因为有时候默认是读清华的服务器下载,但下载失败,这是可以尝试从阿里云服务器下载安装包。

将上述代码保存为todo_app.py文件。
在终端或命令提示符中运行以下命令启动应用:
python todo_app.py
在文本框中输入任务内容,点击“add”按钮将任务添加到列表中。
点击任务前的复选框可标记任务为已完成或未完成。
点击任务旁边的“delete”按钮可删除该任务。
这个示例提供了一个基本的待办事项应用功能,您可以根据需要进一步扩展和定制。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员Thomas

谢谢您的打赏,我将会更好创作。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值