saltyfishyjk / PyToDo

PyToDo is a GUI project based mainly on Python

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

PyToDo

License Python Version

项目简介

环境

python3.9

.../待补全

代码简介

database.py

Author:YJK

功能:为项目其他模块提供数据库相关接口,在每个函数上方注释中通过FUNC,IN,RET三个部分注明该函数的功能、传入参数约定与返回参数约定

接口与约定

函数接口名 功能 传入参数 返回参数 其他
sign_up_database 数据库端实现注册功能 account(str), password(str) isSuccessful(boolean), hint(str) 调用者应在前端检查用户两次输入的密码是否一样,一样后才可调用本函数。
第一个返回值为True时说明注册成功,为Flase说明注册失败,第二个字符串hint说明成功/失败的可能原因。
login_in_database 数据库端实现登录功能 account(str), password(str) isSuccessful(boolean), user(User obj), tasks(list of Task obj), hint(str) isSuccessfulhint功能同上。
当登录成功时,第二个返回值user为非空User对象,包含用户在数据库中的信息;第三个返回值tasksTask对象的列表,包含用户在数据库中存储的任务们。
add_task_database 数据库端实现为用户添加任务 user(User obj), task(Task obj) isSuccessful(boolean), hint(str) 数据库中通过User的id和Task的id作为与其他User和Task区分的唯一标志,在login_in_database得到的user和tasks需要妥善保存
调用该接口时,第一个传入参数是登录时得到的User对象,第二个传入参数是要添加的Task对象。
新建的Task对象的id不需要写,设为None即可(默认构造器就是None),数据库会根据库内数据自动生成id并修改传入Task对象的id
delete_task_database 数据库端实现为用户删除任务 user(User obj), old_task(Task obj) isSuccessful(boolean), hint(str) 删除某个任务,这里同样以任务的id为唯一标识符,需要妥善保存在add_task_database传入的Task对象。
modify_task_database 数据库端修改用户任务 user(User obj), new_task(Task obj) isSuccessful(boolean), hint(str) 修改已经存在的任务。
调用者修改特定Task的除ID外的任意属性,并将其和User对象一同传入本函数,即可修改对象属性。
modify_task_state_database 数据库端修改用户任务状态 user(User obj), task(Task obj), new_state(str) isSuccessful(boolean), hint(str) 修改已经存在的任务的状态。
调用者将用户对象、任务对象和new_state传入,即可修改对象属性。
get_task_list_database 数据库端获取用户任务列表 user(obj) tasklist(Task[])

NewTask.py

Author:YJK

功能:弹出NewTask对话窗口并获取用户输入值。

接口与约定

创建窗口与信号槽的连接

对于新建空白NewTask,可以采用类似如下行为:

# 定义创建窗口行为
def openNewTaskDialog(self):
	import NewTask
    # loginuser为登录的User对象
	my = NewTask.NewTask(loginuser)
	my.show()
	my.communicate.mySignal[Task].connect(getDialogSignal) # 连接信号接收后的自动行为
	my.exec()
# 定义信号接收后的自动行为,其中task为Task对象
def getDialogSignal(task):
	global tasklist
	tasklist.append(task)  

对于修改已有Task,可以采用类似如下行为:

# 定义创建窗口行为
def openNewTaskDialog(self):
	import NewTask
    # loginuser为登录的User对象,demotask为要修改的task对象
	my = NewTask.NewTask(loginuser, task=demotask)
    global tasklist
    tasklist.remove(task)
	my.show()
	my.communicate.mySignal[Task].connect(getDialogSignal) # 连接信号接收后的自动行为
	my.exec()
# 定义信号接收后的自动行为,其中task为Task对象
def getDialogSignal(task):
	global tasklist
	tasklist.append(task)  

About

PyToDo is a GUI project based mainly on Python

License:MIT License


Languages

Language:Python 61.1%Language:Tcl 38.9%Language:CSS 0.0%Language:Shell 0.0%Language:Batchfile 0.0%