gpt用pyQT和python 写待办事项程序,回头把我自己写的改造一下

首先,需要安装以下库:

- PyQt5:用于创建桌面应用程序的GUI界面
- sqlite3:用于连接和操作SQLite数据库

然后,可以按照以下步骤来实现待办事项程序:

1. 创建一个SQLite数据库,并创建一个名为“tasks”的表,用于存储待办事项的详细信息,包括任务名称、任务类型、任务截止日期、任务状态等。

```python
import sqlite3

conn = sqlite3.connect('tasks.db')
c = conn.cursor()

c.execute('''CREATE TABLE tasks
             (id INTEGER PRIMARY KEY AUTOINCREMENT,
              name TEXT NOT NULL,
              type TEXT NOT NULL,
              deadline TEXT NOT NULL,
              status TEXT NOT NULL)''')

conn.commit()
conn.close()
```

2. 创建一个GUI界面,用于显示待办事项列表和添加新任务。可以使用PyQt5中的QWidget、QVBoxLayout、QHBoxLayout、QLabel、QLineEdit、QComboBox、QDateEdit、QPushButton等控件来创建界面。

```python
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QHBoxLayout, QLabel, QLineEdit, QComboBox, QDateEdit, QPushButton

class ToDoList(QWidget):
    def __init__(self):
        super().__init__()

        # 创建控件
        self.daily_label = QLabel('每日任务')
        self.daily_list = QListWidget()
        self.weekly_label = QLabel('每周任务')
        self.weekly_list = QListWidget()
        self.tenday_label = QLabel('每旬任务')
        self.tenday_list = QListWidget()
        self.monthly_label = QLabel('每月任务')
        self.monthly_list = QListWidget()
        self.quarterly_label = QLabel('每季任务')
        self.quarterly_list = QListWidget()
        self.other_label = QLabel('其他任务')
        self.other_list = QListWidget()
        self.name_label = QLabel('任务名称')
        self.name_edit = QLineEdit()
        self.type_label = QLabel('任务类型')
        self.type_combo = QComboBox()
        self.type_combo.addItems(['每日', '每周', '每旬', '每月', '每季', '其他'])
        self.deadline_label = QLabel('截止日期')
        self.deadline_edit = QDateEdit()
        self.add_button = QPushButton('添加任务')

        # 创建布局
        self.daily_layout = QVBoxLayout()
        self.daily_layout.addWidget(self.daily_label)
        self.daily_layout.addWidget(self.daily_list)
        self.weekly_layout = QVBoxLayout()
        self.weekly_layout.addWidget(self.weekly_label)
        self.weekly_layout.addWidget(self.weekly_list)
        self.tenday_layout = QVBoxLayout()
        self.tenday_layout.addWidget(self.tenday_label)
        self.tenday_layout.addWidget(self.tenday_list)
        self.monthly_layout = QVBoxLayout()
        self.monthly_layout.addWidget(self.monthly_label)
        self.monthly_layout.addWidget(self.monthly_list)
        self.quarterly_layout = QVBoxLayout()
        self.quarterly_layout.addWidget(self.quarterly_label)
        self.quarterly_layout.addWidget(self.quarterly_list)
        self.other_layout = QVBoxLayout()
        self.other_layout.addWidget(self.other_label)
        self.other_layout.addWidget(self.other_list)
        self.form_layout = QFormLayout()
        self.form_layout.addRow(self.name_label, self.name_edit)
        self.form_layout.addRow(self.type_label, self.type_combo)
        self.form_layout.addRow(self.deadline_label, self.deadline_edit)
        self.button_layout = QHBoxLayout()
        self.button_layout.addStretch()
        self.button_layout.addWidget(self.add_button)

        # 创建主布局
        self.main_layout = QVBoxLayout()
        self.main_layout.addLayout(self.daily_layout)
        self.main_layout.addLayout(self.weekly_layout)
        self.main_layout.addLayout(self.tenday_layout)
        self.main_layout.addLayout(self.monthly_layout)
        self.main_layout.addLayout(self.quarterly_layout)
        self.main_layout.addLayout(self.other_layout)
        self.main_layout.addLayout(self.form_layout)
        self.main_layout.addLayout(self.button_layout)
        self.setLayout(self.main_layout)
```

3. 实现添加任务的功能。当用户点击“添加任务”按钮时,将获取任务名称、任务类型、截止日期等信息,并将其插入到SQLite数据库中。然后,根据任务类型将任务添加到相应的列表中。

```python
class ToDoList(QWidget):
    def __init__(self):
        super().__init__()

        # 创建控件和布局

        # 创建按钮的信号槽
        self.add_button.clicked.connect(self.add_task)

    def add_task(self):
        # 获取任务信息
        name = self.name_edit.text()
        type = self.type_combo.currentText()
        deadline = self.deadline_edit.date().toString('yyyy-MM-dd')
        status = '未完成'

        # 将任务插入到数据库中
        conn = sqlite3.connect('tasks.db')
        c = conn.cursor()
        c.execute("INSERT INTO tasks (name, type, deadline, status) VALUES (?, ?, ?, ?)", (name, type, deadline, status))
        conn.commit()
        conn.close()

        # 根据任务类型将任务添加到相应的列表中
        if type == '每日':
            self.daily_list.addItem(name)
        elif type == '每周':
            self.weekly_list.addItem(name)
        elif type == '每旬':
            self.tenday_list.addItem(name)
        elif type == '每月':
            self.monthly_list.addItem(name)
        elif type == '每季':
            self.quarterly_list.addItem(name)
        else:
            self.other_list.addItem(name)

        # 清空输入框
        self.name_edit.setText('')
        self.type_combo.setCurrentIndex(0)
        self.deadline_edit.setDate(QDate.currentDate())
```

4. 实现从数据库中加载任务列表的功能。当程序启动时,将从SQLite数据库中获取所有任务,并将它们添加到相应的列表中。

```python
class ToDoList(QWidget):
    def __init__(self):
        super().__init__()

        # 创建控件和布局

        # 加载任务列表
        self.load_tasks()

    def load_tasks(self):
        # 从数据库中获取所有任务
        conn = sqlite3.connect('tasks.db')
        c = conn.cursor()
        c.execute("SELECT * FROM tasks")
        tasks = c.fetchall()
        conn.close()

        # 将任务添加到相应的列表中
        for task in tasks:
            name = task[1]
            type = task[2]
            deadline = task[3]
            status = task[4]
            if type == '每日':
                self.daily_list.addItem(name)
            elif type == '每周':
                self.weekly_list.addItem(name)
            elif type == '每旬':
                self.tenday_list.addItem(name)
            elif type == '每月':
                self.monthly_list.addItem(name)
            elif type == '每季':
                self.quarterly_list.addItem(name)
            else:
                self.other_list.addItem(name)
```

5. 实现任务完成和删除的功能。当用户在列表中选择一个任务时,可以将其标记为已完成或删除它。当任务被标记为已完成时,将更新数据库中的任务状态。

```python
class ToDoList(QWidget):
    def __init__(self):
        super().__init__()

        # 创建控件和布局

        # 创建列表的信号槽
        self.daily_list.itemDoubleClicked.connect(self.complete_task)
        self.weekly_list.itemDoubleClicked.connect(self.complete_task)
        self.tenday_list.itemDoubleClicked.connect(self.complete_task)
        self.monthly_list.itemDoubleClicked.connect(self.complete_task)
        self.quarterly_list.itemDoubleClicked.connect(self.complete_task)
        self.other_list.itemDoubleClicked.connect(self.complete_task)

    def complete_task(self, item):
        # 获取任务信息
        name = item.text()
        type = ''
        if item.listWidget() == self.daily_list:
            type = '每日'
        elif item.listWidget() == self.weekly_list:
            type = '每周'
        elif item.listWidget() == self.tenday_list:
            type = '每旬'
        elif item.listWidget() == self.monthly_list:
            type = '每月'
        elif item.listWidget() == self.quarterly_list:
            type = '每季'
        else:
            type = '其他'

        # 更新任务状态
        conn = sqlite3.connect('tasks

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值