首页 > 数据库 >PyQt项目实战-(Pyqt5+mysql制作一个TODO清单 第一部分)

PyQt项目实战-(Pyqt5+mysql制作一个TODO清单 第一部分)

时间:2024-09-26 23:21:58浏览次数:13  
标签:setObjectName Form self verticalLayoutWidget PyQt label Pyqt5 TODO pushButton

PyQt项目实战

Pyqt5实现todolist工作待办的增、改、删、查功能,连接mysql存储数据(待办事项)。

目录

目录

        1.界面设计

        2.功能实现

        3.界面各Button点击事件和槽函数的链接

        4.mysql数据库操作工具类

        5.槽函数实现数据库操作

1.界面设计

支持新增待办事项、修改事项的内容,可选择事项的状态(完成/待完成),可设置用户的发薪日期,实时显示当前时间。效果图:

界面设计代码:

class Ui_Form(object):
    def setupUi(self, Form):
        if not Form.objectName():
            Form.setObjectName(u"Form")
        Form.resize(431, 679)
        Style = CommonHelper.readQss("TODO.qss")
        Form.setStyleSheet(Style)
        self.frame = QFrame(Form)
        self.frame.setObjectName(u"frame")
        self.frame.setFrameShape(QFrame.StyledPanel)
        self.frame.setFrameShadow(QFrame.Raised)
        self.Time_Label = QLabel(self.frame)
        self.Time_Label.setObjectName(u"Time_Label")
        self.label_2 = QLabel(self.frame)
        self.label_2.setObjectName(u"label_2")
        self.verticalLayoutWidget_3 = QWidget(self.frame)
        self.verticalLayoutWidget_3.setObjectName(u"verticalLayoutWidget_3")
        self.verticalLayout_3 = QVBoxLayout(self.verticalLayoutWidget_3)
        self.verticalLayout_3.setObjectName(u"verticalLayout_3")
        self.verticalLayout_3.setContentsMargins(0, 0, 0, 0)
        self.label_9 = QLabel(self.verticalLayoutWidget_3)
        self.label_9.setObjectName(u"label_9")
        self.verticalLayout_3.addWidget(self.label_9)
        self.label_10 = QLabel(self.verticalLayoutWidget_3)
        self.label_10.setObjectName(u"label_10")
        self.verticalLayout_3.addWidget(self.label_10)
        self.label_11 = QLabel(self.verticalLayoutWidget_3)
        self.label_11.setObjectName(u"label_11")
        self.verticalLayout_3.addWidget(self.label_11)
        self.verticalLayoutWidget = QWidget(self.frame)
        self.verticalLayoutWidget.setObjectName(u"verticalLayoutWidget")
        self.verticalLayout = QVBoxLayout(self.verticalLayoutWidget)
        self.verticalLayout.setObjectName(u"verticalLayout")
        self.verticalLayout.setContentsMargins(0, 0, 0, 0)
        self.label_3 = QLabel(self.verticalLayoutWidget)
        self.label_3.setObjectName(u"label_3")
        self.verticalLayout.addWidget(self.label_3)
        self.label_4 = QLabel(self.verticalLayoutWidget)
        self.label_4.setObjectName(u"label_4")
        self.verticalLayout.addWidget(self.label_4)
        self.label_5 = QLabel(self.verticalLayoutWidget)
        self.label_5.setObjectName(u"label_5")
        self.verticalLayout.addWidget(self.label_5)
        self.img = QLabel(self.frame)
        self.img.setObjectName(u"img")
        self.horizontalFrame = QFrame(self.frame)
        self.horizontalFrame.setObjectName(u"horizontalFrame")
        self.horizontalLayout = QHBoxLayout(self.horizontalFrame)
        self.horizontalLayout.setObjectName(u"horizontalLayout")
        self.pushButton_4 = QPushButton(self.horizontalFrame)
        self.pushButton_4.setObjectName(u"pushButton_4")
        icon = QIcon()
        icon.addFile(u":/img/imgs/tips.png", QSize(), QIcon.Normal, QIcon.Off)
        self.pushButton_4.setIcon(icon)
        self.horizontalLayout.addWidget(self.pushButton_4)
        self.pushButton_3 = QPushButton(self.horizontalFrame)
        self.pushButton_3.setObjectName(u"pushButton_3")
        icon1 = QIcon()
        icon1.addFile(u":/img/imgs/help.png", QSize(), QIcon.Normal, QIcon.Off)
        self.pushButton_3.setIcon(icon1)
        self.horizontalLayout.addWidget(self.pushButton_3)
        self.pushButton_2 = QPushButton(self.horizontalFrame)
        self.pushButton_2.setObjectName(u"pushButton_2")
        icon2 = QIcon()
        icon2.addFile(u":/img/imgs/close.png", QSize(), QIcon.Normal, QIcon.Off)
        self.pushButton_2.setIcon(icon2)
        self.horizontalLayout.addWidget(self.pushButton_2)
        self.listWidget = QListWidget(self.frame)
        self.listWidget.setObjectName(u"listWidget")
        self.pushButton = QPushButton(self.frame)
        self.pushButton.setObjectName(u"pushButton")
        icon = QIcon()
        icon.addFile(u":/img/imgs/add.png", QSize(), QIcon.Normal, QIcon.Off)
        self.pushButton.setIcon(icon)

        self.frame.setGeometry(QRect(0, 0, 431, 481))
        self.Time_Label.setGeometry(QRect(10, 10, 231, 31))
        self.label_2.setGeometry(QRect(20, 40, 391, 41))
        self.verticalLayoutWidget_3.setGeometry(QRect(20, 90, 91, 80))
        self.verticalLayoutWidget.setGeometry(QRect(110, 90, 91, 80))
        self.img.setGeometry(QRect(320, 40, 100, 100))
        self.horizontalFrame.setGeometry(QRect(300, 0, 131, 42))
        self.listWidget.setGeometry(QRect(10, 190, 411, 192))
        self.pushButton.setGeometry(QRect(370, 437, 51, 41))

        self.retranslateUi(Form)

        QMetaObject.connectSlotsByName(Form)

    # setupUi

    def retranslateUi(self, Form):
        Form.setWindowTitle(QCoreApplication.translate("Form", u"Form", None))
        self.Time_Label.setText(QCoreApplication.translate("Form", u"\u73b0\u5728\u65f6\u95f4:", None))
        self.label_2.setText(QCoreApplication.translate("Form", u"12:15:30", None))
        self.label_9.setText(QCoreApplication.translate("Form", u"\u79bb\u53d1\u85aa", None))
        self.label_10.setText(QCoreApplication.translate("Form", u"10", None))
        self.label_11.setText(QCoreApplication.translate("Form", u"\u5929", None))
        self.label_3.setText(QCoreApplication.translate("Form", u"\u79bb\u5468\u516d", None))
        self.label_4.setText(QCoreApplication.translate("Form", u"10", None))
        self.label_5.setText(QCoreApplication.translate("Form", u"\u5929", None))
        self.img.setText("")

        __sortingEnabled = self.listWidget.isSortingEnabled()
        self.listWidget.setSortingEnabled(False)
        self.listWidget.setSortingEnabled(__sortingEnabled)
        self.pushButton.clicked.connect(self.addItemToListWidget)

2.功能实现

        (1)实时显示当前时间

# 定义定时器
self.timer = QTimer(self)
self.timer.timeout.connect(self.update_time_and_labels)
self.timer.start(1000)  # 每秒更新一次

        (2)新增待办事项

@Slot()
def addItemToListWidget(self):
    # 创建一个可选中的项
    item = QListWidgetItem()
    item.setFlags(item.flags() | Qt.ItemIsUserCheckable)
    item.setCheckState(Qt.Unchecked)
    item.setText("")  # 默认文本
    item.setFlags(
        Qt.ItemIsSelectable | Qt.ItemIsEditable | Qt.ItemIsDragEnabled | Qt.ItemIsUserCheckable | Qt.ItemIsEnabled);  # 可编辑文本

    # 添加到listWidget中
    self.listWidget.addItem(item)

    # 使得项可编辑
    self.listWidget.editItem(item)

        (3)修改事项的内容

self.listWidget.editItem(item)

        

标签:setObjectName,Form,self,verticalLayoutWidget,PyQt,label,Pyqt5,TODO,pushButton
From: https://blog.csdn.net/qq_56959393/article/details/142579799

相关文章

  • 【配置docker镜像】docker报错ERROR [todo-app] resolve image config for docker-ima
    在学习dockerdesktop的官方案例multi-container-app时,运行命令dockercomposeup-d时遇到如下报错:PSD:\AA\multi-container-app>dockercomposeup-d[+]Building21.3s(3/3)FINISHED......
  • PyQt5 使用 QLabel 实现对图片圆角或者圆形图片
    PyQt5使用QLabel实现对图片圆角或者圆形图片本文圆角实现代码,是基于Qt处理图片:设置图片圆角样式,支持全圆角和部分圆角这篇文章将C++用Python重写得到,感谢!!实现方法就是使用QPainter与QPainterPath,将原QPixmap对象,先裁剪出一个圆角QPixmap对象并返回,最后通过QLabel的setPixmap......
  • Pyqt5 修改表格排序箭头
    实现效果:代码fromchatgptimportsysfromPyQt5.QtWidgetsimportQApplication,QTableWidget,QTableWidgetItem,QVBoxLayout,QWidgetfromPyQt5.QtCoreimportQtclassTableDemo(QWidget):def__init__(self):super().__init__()#创建表......
  • 如何动态更改pyqtgraph中的文本
    我正在尝试创建一个继承pyqthraph的TextItem类的自定义类,以便我可以拥有多行,每行具有不同的颜色,就像仅1个TextItem对象一样。我希望能够在类中存储行位置和颜色的逻辑,基本上,如果删除文本行,所有后续行都会向上移动。下面的代码概要是:它是一种随机游走,绘......
  • 【Python-GUI图形化界面-PyQt5模块(2)】——QApplication核心模块
     本文旨在带大家学习Python中的一种GUI图形化界面模块——PyQt5模块,将为大家详细了解PyQt5模块中函数的参数和使用:一、PyQt5简介PyQt是Qt框架的Python语言实现,由RiverbankComputing开发,是最强大的GUI库之一。官方网站:www.riverbankcomputing.com、 本文比较倾向于教会......
  • PyQt5 中的强大工具 ——QTextEdit 富文本框
    在PyQt5的世界里,QTextEdit是一个功能强大的富文本框组件,它为开发者提供了丰富的文本编辑和展示功能。本文将深入探讨PyQt5中的QTextEdit,带你领略其强大之处。一、引言在现代图形用户界面(GUI)应用程序中,富文本编辑功能是不可或缺的一部分。无论是编写文档、编辑邮件还......
  • PyQt5 使用 QStackedWidget 实现轮播展示动画,但是却疯狂闪烁的解决办法
    PyQt5使用QStackedWidget实现轮播展示动画,但是却疯狂闪烁的解决办法上篇说到,上篇见这里我们可能会遇到,当把鼠标移动到"下一页"和"上一页"按钮,又或者是Qlabel标签页时,就会疯狂闪烁,于是在这里换另一种方案,解决这个问题代码结构本文基于上篇,上篇见这里修改而来,全部代码......
  • 前端——JavaScript练习 做一个todoList
    用前端制作一个todoList的表格,实现更新、删除、修改等功能。涉及几个知识点:设置最小高度(宽度):.container{min-width:350px;/*最小宽度最小不会小于210px*/} 去掉外轮廓outline:none;去除字符串两端的空白字符(包括空格、制表符、......
  • PyQt5 使用 QStackedWidget 实现轮播展示动画(自动与手动)
    PyQt5使用QStackedWidget实现轮播展示动画(自动与手动)在PyQt5中,如果需要用QStackedWidget展示图片比较生硬,参考网络上的一些内容,发现用QPropertyAnimation属性动画可实现想要的效果,于是记录在这里代码结构本文中全部代码全在test_QStackedWidget_Animation.py这一个文件中......
  • PyQt / PySide + Pywin32 + ctypes 自定义标题栏窗口 + 完全还原 Windows 原生窗口边
    项目地址:GitHub-github201014/PyQt-NativeWindow:AclassofwindowincludenativeEvent,usePySideorPyQtandPywin32andctypesAclassofwindowincludenativeEvent,usePySideorPyQtandPywin32andctypes-github201014/PyQt-NativeWindowhttps://githu......