用户名  找回密码
 中文实名注册
查看: 92|回复: 3

创意编程

[复制链接]

7

主题

121

回帖

2217

积分

金牌会员

积分
2217
发表于 2025-3-16 20:29:45 | 显示全部楼层 |阅读模式
本帖最后由 周星宇 于 2025-3-16 20:31 编辑

请帮我用python做一个程序,带界面,设置为苹果风格,在每一个待完成事项后面再增加一个文本框,用于补充对这一个事项的描述,还需要有保存功能,界面需要高级一些,并且可以在每一个事项后补充时间,按照优先级进行排序:待办事项清单应用,创建一个待办事项清单应用,支持任务添加、删除、标记完成等功能。 介绍: 学习数据存储、用户界面设计和事件处理。
回复

举报

711

主题

398

回帖

2万

积分

管理员

积分
21384
发表于 2025-3-18 09:14:53 | 显示全部楼层
请帮我用python和qt5做一个学习规划事项的程序,界面为苹果风格。界面分为两个区,一个待完成事项区,一个完成事项区。待完成事项区,每一个待完成事项有名称,有事项的描述,完成的事项可以上传图片,再打钩确认后移动到完成事项区,并添加完成的时间。使用一个小的数据库,要具备增删改查的功能。并创建一个文件详细详细介绍一下软件测操作及功能。
回复

举报

711

主题

398

回帖

2万

积分

管理员

积分
21384
发表于 2025-3-18 14:22:42 | 显示全部楼层
[Python] 纯文本查看 复制代码
import sys
import sqlite3
from datetime import datetime
from PyQt5.QtWidgets import *
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPalette, QColor, QFont

class TaskManager(QMainWindow):
    def __init__(self):
        super().__init__()
        self.init_ui()
        self.init_db()
        self.load_tasks()
        
    def init_ui(self):
        self.setWindowTitle('学习规划事项--东台市实验中学728 周星宇')
        self.setGeometry(100, 100, 1000, 600)
        self.setStyleSheet('''
            QMainWindow {
                background-color: #f5f5f7;
            }
            QListWidget {
                background-color: white;
                border-radius: 10px;
                padding: 10px;
                font-size: 14px;
            }
            QPushButton {
                background-color: #0071e3;
                color: white;
                border-radius: 6px;
                padding: 8px 15px;
                font-size: 14px;
            }
            QPushButton:hover {
                background-color: #0077ed;
            }
            QLineEdit, QTextEdit {
                background-color: white;
                border: 1px solid #d1d1d1;
                border-radius: 6px;
                padding: 8px;
                font-size: 14px;
            }
            QLabel {
                font-size: 14px;
                color: #1d1d1f;
            }
        ''')

        # 创建主窗口部件
        central_widget = QWidget()
        self.setCentralWidget(central_widget)
        
        # 主布局
        layout = QHBoxLayout()
        
        # 左侧待完成区
        left_widget = QWidget()
        left_layout = QVBoxLayout()
        left_label = QLabel('待完成事项')
        left_label.setFont(QFont('SF Pro Display', 16, QFont.Bold))
        self.todo_list = QListWidget()
        
        # 添加新任务区域
        add_group = QGroupBox('添加新事项')
        add_layout = QVBoxLayout()
        
        self.name_input = QLineEdit()
        self.name_input.setPlaceholderText('事项名称')
        self.desc_input = QTextEdit()
        self.desc_input.setPlaceholderText('事项描述')
        self.desc_input.setMaximumHeight(100)
        
        btn_layout = QHBoxLayout()
        self.add_btn = QPushButton('添加')
        self.add_btn.clicked.connect(self.add_task)
        self.edit_btn = QPushButton('编辑')
        self.edit_btn.clicked.connect(self.edit_task)
        self.delete_btn = QPushButton('删除')
        self.delete_btn.clicked.connect(self.delete_task)
        
        btn_layout.addWidget(self.add_btn)
        btn_layout.addWidget(self.edit_btn)
        btn_layout.addWidget(self.delete_btn)
        
        add_layout.addWidget(self.name_input)
        add_layout.addWidget(self.desc_input)
        add_layout.addLayout(btn_layout)
        add_group.setLayout(add_layout)
        
        left_layout.addWidget(left_label)
        left_layout.addWidget(self.todo_list)
        left_layout.addWidget(add_group)
        left_widget.setLayout(left_layout)
        
        # 右侧完成区
        right_widget = QWidget()
        right_layout = QVBoxLayout()
        right_label = QLabel('已完成事项')
        right_label.setFont(QFont('SF Pro Display', 16, QFont.Bold))
        self.done_list = QListWidget()
        
        right_layout.addWidget(right_label)
        right_layout.addWidget(self.done_list)
        right_widget.setLayout(right_layout)
        
        # 添加到主布局
        layout.addWidget(left_widget)
        layout.addWidget(right_widget)
        central_widget.setLayout(layout)

        # 添加完成按钮
        self.todo_list.itemDoubleClicked.connect(self.complete_task)

    def init_db(self):
        # 删除旧的数据库文件(如果存在)
        import os
        if os.path.exists('tasks.db'):
            os.remove('tasks.db')
            
        self.conn = sqlite3.connect('tasks.db')
        self.cursor = self.conn.cursor()
        
        # 创建新的表结构
        self.cursor.execute('''
            CREATE TABLE IF NOT EXISTS tasks (
                id INTEGER PRIMARY KEY AUTOINCREMENT,
                name TEXT NOT NULL,
                description TEXT,
                done INTEGER DEFAULT 0,
                completed_at TEXT
            )
        ''')
        self.conn.commit()

    def load_tasks(self):
        self.todo_list.clear()
        self.done_list.clear()
        
        # 加载待完成事项
        self.cursor.execute('SELECT * FROM tasks WHERE done = 0')
        for task in self.cursor.fetchall():
            item = QListWidgetItem(f"{task[1]}\n{task[2]}")
            item.setData(Qt.UserRole, task[0])
            self.todo_list.addItem(item)
            
        # 加载已完成事项
        self.cursor.execute('SELECT * FROM tasks WHERE done = 1')
        for task in self.cursor.fetchall():
            item = QListWidgetItem(f"{task[1]}\n{task[2]}\n完成时间: {task[4]}")
            item.setData(Qt.UserRole, task[0])
            self.done_list.addItem(item)

    def add_task(self):
        name = self.name_input.text().strip()
        desc = self.desc_input.toPlainText().strip()
        
        if not name:
            QMessageBox.warning(self, '警告', '请输入事项名称!')
            return
            
        self.cursor.execute(
            'INSERT INTO tasks (name, description) VALUES (?, ?)',
            (name, desc)
        )
        self.conn.commit()
        self.name_input.clear()
        self.desc_input.clear()
        self.load_tasks()

    def edit_task(self):
        current = self.todo_list.currentItem()
        if not current:
            QMessageBox.warning(self, '警告', '请选择要编辑的事项!')
            return
            
        task_id = current.data(Qt.UserRole)
        name = self.name_input.text().strip()
        desc = self.desc_input.toPlainText().strip()
        
        if not name:
            QMessageBox.warning(self, '警告', '请输入事项名称!')
            return
            
        self.cursor.execute(
            'UPDATE tasks SET name = ?, description = ? WHERE id = ?',
            (name, desc, task_id)
        )
        self.conn.commit()
        self.name_input.clear()
        self.desc_input.clear()
        self.load_tasks()

    def delete_task(self):
        current = self.todo_list.currentItem()
        if not current:
            QMessageBox.warning(self, '警告', '请选择要删除的事项!')
            return
            
        task_id = current.data(Qt.UserRole)
        reply = QMessageBox.question(self, '确认', '确定要删除该事项吗?',
                                   QMessageBox.Yes | QMessageBox.No)
                                   
        if reply == QMessageBox.Yes:
            self.cursor.execute('DELETE FROM tasks WHERE id = ?', (task_id,))
            self.conn.commit()
            self.load_tasks()

    def complete_task(self, item):
        task_id = item.data(Qt.UserRole)
        completed_at = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
        
        self.cursor.execute(
            'UPDATE tasks SET done = 1, completed_at = ? WHERE id = ?',
            (completed_at, task_id)
        )
        self.conn.commit()
        self.load_tasks()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = TaskManager()
    window.show()
    sys.exit(app.exec_())
回复

举报

711

主题

398

回帖

2万

积分

管理员

积分
21384
发表于 2025-3-18 14:24:10 | 显示全部楼层
请帮我用python和qt5做一个学习规划事项的程序,界面为苹果风格。界面分为两个区,一个待完成事项区,一个完成事项区。
每一个待完成事项有名称,有事项的描述,添加待完成事项,会显示在待完成事项区,待完成事项确认后移动到完成事项区,并添加完成的时间,一同显示出来。使用一个小的数据库,要具备增删改查的功能。
让我为这个学习规划事项软件的功能做个详细说明:

### 主要功能

1. **任务管理**
   - 添加新的学习任务(包含名称和详细描述)
   - 删除已有任务
   - 编辑现有任务的内容
   - 将任务标记为已完成

2. **界面布局**
   - 左侧显示待完成事项列表
   - 右侧显示已完成事项列表
   - 底部有任务添加/编辑区域

3. **数据存储**
   - 使用SQLite数据库永久保存任务数据
   - 记录任务的完成时间
   - 自动保存所有操作

4. **具体操作**
   - 可以添加新的学习任务
   - 双击待办事项可将其标记为完成
   - 选中任务后可以进行编辑或删除
   - 完成的任务会自动显示完成时间

5. **界面特点**
   - 采用苹果风格设计
   - 清晰的视觉层次
   - 简洁易用的操作界面
   - 圆角按钮和现代化的界面元素

6. **数据处理**
   - 支持任务的增删改查
   - 自动同步到数据库
   - 程序重启后保持数据不丢失

这个软件主要用于学习任务的规划和管理,帮助用户更好地组织和跟踪学习进度。
回复

举报

您需要登录后才可以回帖 登录 | 中文实名注册

本版积分规则

手机版|小黑屋|东台市机器人学会;盐城市极创科技有限公司 ( 苏ICP备2021035350号-1;苏ICP备2021035350号-2;苏ICP备2021035350号-3 )

GMT+8, 2025-4-8 06:59 , Processed in 0.093147 second(s), 28 queries .

Powered by Discuz! X3.5

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表