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
gpt用pyQT和python 写待办事项程序,回头把我自己写的改造一下相关推荐
- python编程可视化小程序_人人都可以写的可视化Python小程序第二篇:旋转的烟花...
兴趣是最好的老师 枯燥的编程容易让人放弃,兴趣才是最好的老师.无论孩子还是大人,只有发现这件事情真的有趣,我们才会非常执着的去做这件事,比如打游戏.如果编程能像玩游戏一样变得有趣,我相信很多人就特别愿 ...
- 用java写秋道程序_Java开发者使用C++写程序踩的坑
笔者是一个很矛盾的人.平时用Java.但是一开始学习的时候学的是汇编语言,而且对C语言也很熟悉.为什么不学C++呢?是因为我可以完全用Java的编码规范去写C++.因此我不需要了解更多的诸如C++的命 ...
- 排行榜上用C++写局域网聊天程序
摘要:用C++写局域网聊天程序 2012年07月09日啰嗦完天使之道,尽量将具有相类似功能的即时通讯软件用例抽象并归类,防属性,揭开人类进程的惊天秘密,并没有攻击技能,用C++写局域网聊天程序获得了众 ...
- python 日程(待办事项) 提醒简单小程序——基于Timer和tkinter
想找一个桌面待办事项提醒的软件,找了好久都没有找到合适的,现有软件的提醒时间都只是精确到上下午或晚上,没有能精确到分钟,便想着自己做一个,这样子还能顺带加强自己对python的学习. 功能目标:输入时 ...
- GPT-4 用 Laf 三分钟写了个完整的待办事项 App
书接前文,上篇文章我们教大家如何三分钟时间用 Laf 实现一个自己的 ChatGPT. 一觉醒来,GPT-4 已经发布了! GPT-4 实现了真正的多模态,可以把纸笔画的原型直接写出网页代码.读论文时 ...
- 续集来了!我让 GPT-4 用 Laf 三分钟写了个完整的待办事项 App
书接前文,上篇文章我们教大家如何三分钟时间用 Laf 实现一个自己的 ChatGPT. 一觉醒来,GPT-4 已经发布了! GPT-4 实现了真正的多模态,可以把纸笔画的原型直接写出网页代码.读论文时 ...
- 从零开始写一个Android待办事项ToDoListApp
概述 初衷 作为一个程序员,每天要处理的事项越来越多,有时一件事情花费了太多的时间而忽略了还有其他事情等着处理.开始是借助Microsoft ToDo 来记录下待办事项,时不时的去看一下,勾选掉已经完 ...
- 什么是待办事项?日常办事项清单怎么写
什么是待办事项?待办事项简单来说就是还没有完成,但是需要完成的事项.这类事项非常容易忘记,而且忘记了会给自己和周围的人带来麻烦.如果你每天事情比较多,想要记住所有的事情显然不可能,这就需要一个记录清单 ...
- 小狗钱钱_✅每次构建待办事项列表应用程序时,都会有一只小狗? 死了?
小狗钱钱 by Hrishi Mittal 由Hrishi Mittal ✅每次构建待办事项列表应用程序时,都会有一只小狗 ? 死了? (✅ Every time you build a to-do ...
最新文章
- 决策树算法之特征工程-特征提取
- log4j, common-logging, slf4j 关系
- Angular CLI版本问题(Your global Angular CLI version (12.2.7) is greater than your local version (9.0.3))
- 串行口通信c语言代码,问一下单片机串行口通信用c语言实现的问题
- 论文公式编号右对齐_如何编辑处理论文中的公式
- uvccamera 后台服务_UVCCamera的一些坑
- Ecliipse-Alt+斜杠(/)不提示
- Zookeeper本地安装配置(windows)
- HTML5设计基本网页-basic frameset
- Yii源码解读 - 事件
- Ansible Loops
- 安卓商城 php后台,洛克商城APP 开源商城安卓源码 含前端和后台
- Java 程序员新机必备程序清单
- echats统计图表的设计与实现
- Tapestry(二):Tapestry基本知识
- simulink【1】分段函数
- 浅谈网络安全应急预案
- 手机云怎样与计算机同步,网易云音乐手机和电脑如何同步?手机和电脑同步教程介绍...
- “玲珑杯”ACM 热身赛 # 2.5 A-B (数论)
- 阿里巴巴2015校招电面
热门文章
- 加拿大访学/博后的子女选择公立学校及办理入学手续详解
- SR SHOW 2018上海国际服务机器人展 年底报名异常火爆
- 高新技术企业所得税政策有哪些?
- 【Nvidia显卡驱动安装失败】
- java jackson gson_Jackson vs Gson
- 2022宁夏杯B题论文分析+完整代码(大学生就业问题分析)
- 人工智能技术在国外舰载武器系统中的应用浅析
- TX2+Docker
- cmsplus实战之仿[我扫网]之九:导入网站模板文件
- Revitalizing CNN Attentions via Transformers in Self-Supervised Visual Representation Learning