锋哥原创的PyQt6图书管理系统视频教程:
PyQt6图书管理系统视频教程 Python桌面开发 Python入门级项目实战 (无废话版) 火爆连载更新中~_哔哩哔哩_bilibiliPyQt6图书管理系统视频教程 Python桌面开发 Python入门级项目实战 (无废话版) 火爆连载更新中~共计24条视频,包括:PyQt6图书管理系统视频教程 Python桌面开发 Python入门级项目实战 (无废话版) 火爆连载更新中~、第2讲 登录功能UI设计实现、第3讲 数据库操作工具包dbUtil.py封装等,UP主更多精彩视频,请关注UP账号。https://www.bilibili.com/video/BV18t4y1R7Qp/因为主界面是需要菜单和状态栏的,所以我们新建的时候,选Main Window
设计菜单:
菜单三个主菜单,分别是 图书管理,图书类别管理,系统设置。
图书管理下面有 图书添加 图书信息管理 子菜单
图书类别管理下面有 图书类别添加 图书类别信息管理 子菜单
系统设置下面有 修改密码 安全退出 | 关于作者 锋哥招收Python学员啦 子菜单
我们把设计好的“主界面”UI文件,用PyUIC,转换成Python文件。
# Form implementation generated from reading ui file '主界面.ui'
#
# Created by: PyQt6 UI code generator 6.4.2
#
# WARNING: Any manual changes made to this file will be lost when pyuic6 is
# run again. Do not edit this file unless you know what you are doing.from PyQt6 import QtCore, QtGui, QtWidgetsclass Ui_MainWindow(object):def setupUi(self, MainWindow):MainWindow.setObjectName("MainWindow")MainWindow.resize(1420, 1148)MainWindow.setAcceptDrops(False)icon = QtGui.QIcon()icon.addPixmap(QtGui.QPixmap("../images/logo.png"), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off)MainWindow.setWindowIcon(icon)self.centralwidget = QtWidgets.QWidget(parent=MainWindow)self.centralwidget.setObjectName("centralwidget")MainWindow.setCentralWidget(self.centralwidget)self.menubar = QtWidgets.QMenuBar(parent=MainWindow)self.menubar.setGeometry(QtCore.QRect(0, 0, 1420, 21))self.menubar.setObjectName("menubar")self.menu = QtWidgets.QMenu(parent=self.menubar)self.menu.setObjectName("menu")self.menu_2 = QtWidgets.QMenu(parent=self.menubar)self.menu_2.setObjectName("menu_2")self.menu_3 = QtWidgets.QMenu(parent=self.menubar)self.menu_3.setObjectName("menu_3")MainWindow.setMenuBar(self.menubar)self.statusbar = QtWidgets.QStatusBar(parent=MainWindow)self.statusbar.setObjectName("statusbar")MainWindow.setStatusBar(self.statusbar)self.action = QtGui.QAction(parent=MainWindow)icon1 = QtGui.QIcon()icon1.addPixmap(QtGui.QPixmap("../images/add.png"), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off)self.action.setIcon(icon1)self.action.setObjectName("action")self.action_2 = QtGui.QAction(parent=MainWindow)icon2 = QtGui.QIcon()icon2.addPixmap(QtGui.QPixmap("../images/bookManager.png"), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off)self.action_2.setIcon(icon2)self.action_2.setObjectName("action_2")self.action_3 = QtGui.QAction(parent=MainWindow)self.action_3.setIcon(icon1)self.action_3.setObjectName("action_3")self.action_4 = QtGui.QAction(parent=MainWindow)icon3 = QtGui.QIcon()icon3.addPixmap(QtGui.QPixmap("../images/bookTypeManager.png"), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off)self.action_4.setIcon(icon3)self.action_4.setObjectName("action_4")self.action_5 = QtGui.QAction(parent=MainWindow)icon4 = QtGui.QIcon()icon4.addPixmap(QtGui.QPixmap("../images/password.png"), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off)self.action_5.setIcon(icon4)self.action_5.setObjectName("action_5")self.action_6 = QtGui.QAction(parent=MainWindow)icon5 = QtGui.QIcon()icon5.addPixmap(QtGui.QPixmap("../images/exit.png"), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off)self.action_6.setIcon(icon5)self.action_6.setObjectName("action_6")self.action_8 = QtGui.QAction(parent=MainWindow)icon6 = QtGui.QIcon()icon6.addPixmap(QtGui.QPixmap("../images/about.png"), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off)self.action_8.setIcon(icon6)self.action_8.setObjectName("action_8")self.action_Python = QtGui.QAction(parent=MainWindow)icon7 = QtGui.QIcon()icon7.addPixmap(QtGui.QPixmap("../images/me.png"), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off)self.action_Python.setIcon(icon7)self.action_Python.setObjectName("action_Python")self.menu.addAction(self.action)self.menu.addAction(self.action_2)self.menu_2.addAction(self.action_3)self.menu_2.addAction(self.action_4)self.menu_3.addAction(self.action_5)self.menu_3.addAction(self.action_6)self.menu_3.addSeparator()self.menu_3.addAction(self.action_8)self.menu_3.addAction(self.action_Python)self.menubar.addAction(self.menu.menuAction())self.menubar.addAction(self.menu_2.menuAction())self.menubar.addAction(self.menu_3.menuAction())self.retranslateUi(MainWindow)QtCore.QMetaObject.connectSlotsByName(MainWindow)def retranslateUi(self, MainWindow):_translate = QtCore.QCoreApplication.translateMainWindow.setWindowTitle(_translate("MainWindow", "图书管理系统"))self.menu.setTitle(_translate("MainWindow", "图书管理"))self.menu_2.setTitle(_translate("MainWindow", "图书类别管理"))self.menu_3.setTitle(_translate("MainWindow", "系统设置"))self.action.setText(_translate("MainWindow", "图书添加"))self.action_2.setText(_translate("MainWindow", "图书信息管理"))self.action_3.setText(_translate("MainWindow", "图书类别添加"))self.action_4.setText(_translate("MainWindow", "图书类别信息管理"))self.action_5.setText(_translate("MainWindow", "修改密码"))self.action_6.setText(_translate("MainWindow", "安全退出"))self.action_8.setText(_translate("MainWindow", "关于作者"))self.action_Python.setText(_translate("MainWindow", "锋哥招收Python学员啦"))
我们在项目目录下,新建main.py,作为主界面模块代码,然后把上面ui文件生成的代码贴到main.py里面去,我们进行二次开发。
为了让代码能运行起来,我们需要把类继承的Object改成QMainWindow
以及加下构造方法:
# 构造方法def __init__(self):super(Ui_MainWindow, self).__init__()self.setWindowFlag(QtCore.Qt.WindowType.MSWindowsFixedSizeDialogHint) # # 只显示最小化和关闭按钮self.setupUi(self)
和前面登录一样,这个图片路径也是要修改的。
最后再加一个Main方法:
if __name__ == '__main__':try:app = QApplication(sys.argv)main = Ui_MainWindow()main.show()sys.exit(app.exec())except Exception as e:print(e)
运行测试: