import sys from PySide.QtCore import * from PySide.QtGui import * import sqlite3, time class ToDoApp(QWidget): def add_task(self): datestring = str(int(time.time())) sqlstatement = 'INSERT INTO tasks (entrydate, description) VALUES (\'' + datestring + '\',\'' + self.home_task_tex.text() + '\')' conn = sqlite3.connect('todohome.db') c = conn.cursor() c.execute(sqlstatement) conn.commit() conn.close() self.update_list() self.home_task_tex.setText('') self.home_task_tex.setFocus() def del_task(self): for each_button in range(0, self.home_task_qtw.rowCount()): if self.tasks_btn[each_button].isDown(): sqlstatement = 'DELETE FROM tasks WHERE id=\'' + str(self.home_task_qtw.item(each_button, 0).text()) + "\'" conn = sqlite3.connect('todohome.db') c = conn.cursor() c.execute(sqlstatement) conn.commit() conn.close() self.list_tasks() def list_tasks(self): self.home_task_qtw.blockSignals(True) for x in range(0, self.home_task_qtw.rowCount()): self.home_task_qtw.removeRow(0) self.tasks_id =[] self.tasks_obj = [] self.tasks_btn = [] self.tasks_date = [] conn = sqlite3.connect('todohome.db') c = conn.cursor() for each in c.execute("SELECT * FROM tasks"): self.home_task_qtw.insertRow(self.home_task_qtw.rowCount()) #1. ID self.tasks_id.append(QTableWidgetItem(str(each[0]))) self.home_task_qtw.setItem(self.home_task_qtw.rowCount()-1, 0, self.tasks_id[-1:][0]) #2. date self.tasks_date.append(QTableWidgetItem(str(each[1]))) self.home_task_qtw.setItem(self.home_task_qtw.rowCount()-1, 1, self.tasks_date[-1:][0]) #3. x button self.tasks_btn.append(QPushButton("x")) self.home_task_qtw.setCellWidget(self.home_task_qtw.rowCount()-1, 2, self.tasks_btn[-1:][0]) self.tasks_btn[-1:][0].pressed.connect(self.del_task) #4 item desc. self.tasks_obj.append(QTableWidgetItem(str(each[2]))) self.home_task_qtw.setItem(self.home_task_qtw.rowCount()-1, 3, self.tasks_obj[-1:][0]) #now update the colors. deltatime = int(time.time()) - int(each[1]) if deltatime >= 0 and deltatime < 84600: self.tasks_obj[-1:][0].setBackground(self.day0) elif deltatime > 84600 and deltatime < 169200: self.tasks_obj[-1:][0].setBackground(self.day1) elif deltatime > 169200 and deltatime < 253800: self.tasks_obj[-1:][0].setBackground(self.day2) elif deltatime > 253800 and deltatime < 338400: self.tasks_obj[-1:][0].setBackground(self.day3) elif deltatime > 338400 and deltatime < 423000: self.tasks_obj[-1:][0].setBackground(self.day4) elif deltatime > 423000 and deltatime < 507600: self.tasks_obj[-1:][0].setBackground(self.day5) elif deltatime > 507600 and deltatime < 592200: self.tasks_obj[-1:][0].setBackground(self.day6) elif deltatime > 592200: self.tasks_obj[-1:][0].setBackground(self.day7) conn.close() self.home_task_qtw.blockSignals(False) def task_updated_cell(self): prikey = self.home_task_qtw.item(self.home_task_qtw.currentRow(), 0).text() newdesc = self.home_task_qtw.currentItem().text() sqlstatement = 'UPDATE tasks SET description=\'' + newdesc + '\' WHERE id=\'' + prikey + '\'' conn = sqlite3.connect('todohome.db') c = conn.cursor() c.execute(sqlstatement) conn.commit() conn.close() self.list_tasks() def add_goal(self): datestring = str(int(time.time())) sqlstatement = 'INSERT INTO goals (entrydate, description) VALUES (\'' + datestring + '\',\'' + self.home_goal_tex.text() + '\')' conn = sqlite3.connect('todohome.db') c = conn.cursor() c.execute(sqlstatement) conn.commit() conn.close() self.update_list() self.home_goal_tex.setText('') self.home_goal_tex.setFocus() def del_goal(self): for each_button in range(0, self.home_goal_qtw.rowCount()): if self.goals_btn[each_button].isDown(): sqlstatement = 'DELETE FROM goals WHERE id=\'' + str(self.home_goal_qtw.item(each_button, 0).text()) + "\'" conn = sqlite3.connect('todohome.db') c = conn.cursor() c.execute(sqlstatement) conn.commit() conn.close() self.update_list() def list_goals(self): self.home_goal_qtw.blockSignals(True) for x in range(0, self.home_goal_qtw.rowCount()): self.home_goal_qtw.removeRow(0) self.goals_id =[] self.goals_obj = [] self.goals_btn = [] self.goals_date = [] conn = sqlite3.connect('todohome.db') c = conn.cursor() for each in c.execute("SELECT * FROM goals"): self.home_goal_qtw.insertRow(self.home_goal_qtw.rowCount()) #1. ID self.goals_id.append(QTableWidgetItem(str(each[0]))) self.home_goal_qtw.setItem(self.home_goal_qtw.rowCount()-1, 0, self.goals_id[-1:][0]) #2. date self.goals_date.append(QTableWidgetItem(str(each[1]))) self.home_goal_qtw.setItem(self.home_goal_qtw.rowCount()-1, 1, self.goals_date[-1:][0]) #3. x button self.goals_btn.append(QPushButton("x")) self.home_goal_qtw.setCellWidget(self.home_goal_qtw.rowCount()-1, 2, self.goals_btn[-1:][0]) self.goals_btn[-1:][0].pressed.connect(self.del_goal) #4 item desc. self.goals_obj.append(QTableWidgetItem(str(each[2]))) self.home_goal_qtw.setItem(self.home_goal_qtw.rowCount()-1, 3, self.goals_obj[-1:][0]) #now update the colors. self.goals_obj[-1:][0].setBackground(self.goalcol) conn.close() self.home_goal_qtw.blockSignals(False) def goal_updated_cell(self): prikey = self.home_goal_qtw.item(self.home_goal_qtw.currentRow(), 0).text() newdesc = self.home_goal_qtw.currentItem().text() sqlstatement = 'UPDATE goals SET description=\'' + newdesc + '\' WHERE id=\'' + prikey + '\'' conn = sqlite3.connect('todohome.db') c = conn.cursor() c.execute(sqlstatement) conn.commit() conn.close() self.update_list() def update_timer_emit(self): self.list_tasks() #self.list_goals() def update_list(self): self.list_tasks() self.list_goals() #self.home_task_qtw.resizeColumnsToContents() #self.home_goal_qtw.resizeColumnsToContents() #self.home_task_qtw.resizeRowsToContents() #self.home_goal_qtw.resizeRowsToContents() def __init__(self): super(ToDoApp, self).__init__() self.initUI() def initUI(self): self.main_layout = QGridLayout(self) self.resize(1920/2, 600) self.day0 = QColor(153,255,137, 75) self.day1 = QColor(193,255,137, 75) self.day2 = QColor(229,255,137, 75) self.day3 = QColor(255,251,137, 75) self.day4 = QColor(255,218,137, 75) self.day5 = QColor(255,182,137, 75) self.day6 = QColor(255,137,139, 75) self.day7 = QColor(255,53,57, 75) self.goalcol = QColor(0,0,255,75) self.home_task_lbl = QLabel("Home Tasks") self.main_layout.addWidget(self.home_task_lbl, 0, 0) self.home_task_qtw = QTableWidget(0, 4) self.home_task_qtw.setShowGrid(False) #self.home_task_qtw.setTextElideMode(Qt.ElideNone) self.home_task_qtw.verticalHeader().hide() self.home_task_qtw.horizontalHeader().hide() self.home_task_qtw.setColumnHidden(0, True) self.home_task_qtw.setColumnHidden(1, True) self.home_task_qtw.setColumnWidth(2,30) self.home_task_qtw.horizontalHeader().setStretchLastSection(True) self.home_task_qtw.setWordWrap(True) self.home_task_qtw.cellChanged.connect(self.task_updated_cell) self.main_layout.addWidget(self.home_task_qtw, 1, 0) self.home_task_tex = QLineEdit() self.main_layout.addWidget(self.home_task_tex, 2, 0) self.home_task_tex.returnPressed.connect(self.add_task) self.home_goal_lbl = QLabel("Home Goals") self.main_layout.addWidget(self.home_goal_lbl, 0, 1) self.home_goal_qtw = QTableWidget(0, 4) self.home_goal_qtw.setShowGrid(False) #self.home_goal_qtw.setTextElideMode(Qt.ElideNone) self.home_goal_qtw.verticalHeader().hide() self.home_goal_qtw.horizontalHeader().hide() self.home_goal_qtw.setColumnHidden(0, True) self.home_goal_qtw.setColumnHidden(1, True) self.home_goal_qtw.setColumnWidth(2,30) self.home_goal_qtw.horizontalHeader().setStretchLastSection(True) self.home_goal_qtw.setWordWrap(True) self.home_goal_qtw.cellChanged.connect(self.goal_updated_cell) self.main_layout.addWidget(self.home_goal_qtw, 1, 1) self.home_goal_tex = QLineEdit() self.main_layout.addWidget(self.home_goal_tex, 2, 1) self.home_goal_tex.returnPressed.connect(self.add_goal) self.update_timer = QTimer() self.update_timer.start(600000) self.update_timer.timeout.connect(self.update_list) self.update_list() self.show() def main(): app = QApplication(sys.argv) myapp = ToDoApp() sys.exit(app.exec_()) if __name__ == '__main__': main()