常州网站推广多少钱,钦州网站建设排名,做网站个体户经营范围,上传网站过程之前学习PyQt5#xff0c;然后那段时间想做一个桌面小程序#xff0c;后来由于学习内容较多就做了一小部分#xff0c;但是可以进行页面跳转。大家如果是初学者对Python感兴趣而且刚学数据库时可以看看代码#xff0c;可能会有点启发。
效果#xff1a; 登录进来是这然后那段时间想做一个桌面小程序后来由于学习内容较多就做了一小部分但是可以进行页面跳转。大家如果是初学者对Python感兴趣而且刚学数据库时可以看看代码可能会有点启发。
效果 登录进来是这 实现了账号密码的增删改功能
结构很简单 源代码如下
database.py
import pymysql # 导入操作MySQL数据库的模块userName # 记录用户名# 打开数据库连接
def open():db pymysql.connect(hostlocalhost, userroot, passwd123456, databasedb_goods,charsetutf8)return db # 返回连接对象#数据库增删改
def exec(sql,values):dbopen() # 连接数据库cursor db.cursor() # 使用cursor()方法获取操作游标try:cursor.execute(sql,values) # 执行增删改的SQL语句db.commit() # 提交数据return 1 # 执行成功except:db.rollback() # 发生错误时回滚return 0 # 执行失败finally:cursor.close() # 关闭游标db.close() # 关闭数据库连接
# 带参数的精确查询
def query(sql,*keys):dbopen() # 连接数据库cursor db.cursor() # 使用cursor()方法获取操作游标cursor.execute(sql,keys) # 执行查询SQL语句result cursor.fetchall() # 记录查询结果cursor.close() # 关闭游标db.close() # 关闭数据库连接return result # 返回查询结果
# 不带参数的模糊查询
def query2(sql):dbopen() # 连接数据库cursor db.cursor() # 使用cursor()方法获取操作游标cursor.execute(sql) # 执行查询SQL语句result cursor.fetchall() # 记录查询结果cursor.close() # 关闭游标db.close() # 关闭数据库连接return result # 返回查询结果
图片要放在这种文件里
RCCqresource prefixnewPrefixfileimages/loginPIC.jpg/filefileimages/main.jpg/file/qresource
/RCC需要用到这个工具大家自己查一下很容易配置
login.py
#login.py
from PyQt5 import QtCore, QtGui, QtWidgets
import dataBase
from PyQt5.QtWidgets import QMessageBox
import main
from PyQt5.QtWidgets import *class Ui_MainWindow(object):def setupUi(self, MainWindow):MainWindow.setObjectName(MainWindow)MainWindow.setWindowFlags(QtCore.Qt.MSWindowsFixedSizeDialogHint)MainWindow.resize(485, 280)self.centralwidget QtWidgets.QWidget(MainWindow)self.centralwidget.setObjectName(centralwidget)self.label QtWidgets.QLabel(self.centralwidget)self.label.setGeometry(QtCore.QRect(0, 0, 261, 281))self.label.setPixmap(QtGui.QPixmap(:/newPrefix/images/loginPIC.jpg))self.label.setObjectName(label)self.label_user QtWidgets.QLabel(self.centralwidget)self.label_user.setGeometry(QtCore.QRect(270, 70, 72, 41))self.label_user.setObjectName(label_2)self.label_pwd QtWidgets.QLabel(self.centralwidget)self.label_pwd.setGeometry(QtCore.QRect(270, 130, 72, 21))self.label_pwd.setObjectName(label_3)self.lineEdit_userName QtWidgets.QLineEdit(self.centralwidget)self.lineEdit_userName.setGeometry(QtCore.QRect(330, 80, 113, 21))self.lineEdit_userName.setObjectName(lineEdit)self.lineEdit_userPasswd QtWidgets.QLineEdit(self.centralwidget)self.lineEdit_userPasswd.setGeometry(QtCore.QRect(330, 130, 113, 21))self.lineEdit_userPasswd.setObjectName(lineEdit_2)self.lineEdit_userPasswd.setEchoMode(QtWidgets.QLineEdit.Password)self.pushButton_login QtWidgets.QPushButton(self.centralwidget)self.pushButton_login.setGeometry(QtCore.QRect(290, 190, 61, 28))self.pushButton_login.setObjectName(pushButton)self.pushButton_exit QtWidgets.QPushButton(self.centralwidget)self.pushButton_exit.setGeometry(QtCore.QRect(370, 190, 61, 28))self.pushButton_exit.setObjectName(pushButton_2)MainWindow.setCentralWidget(self.centralwidget)self.retranslateUi(MainWindow)QtCore.QMetaObject.connectSlotsByName(MainWindow)self.pushButton_exit.clicked.connect(MainWindow.close) # 关闭登录窗体self.pushButton_login.clicked.connect(self.openMain) #登录def openMain(self):dataBase.userName self.lineEdit_userName.text()userPasswd self.lineEdit_userPasswd.text()if dataBase.userName and userPasswd:result dataBase.query(select * from goods_user where userName %s and userPasswd %s, dataBase.userName, userPasswd)if len(result) 0:self.main_window QtWidgets.QMainWindow()self.main_ui main.Ui_MainWindow()self.main_ui.setupUi(self.main_window)self.main_window.show()MainWindow.hide()else:self.lineEdit_userName.setText()self.lineEdit_userPasswd.setText()QMessageBox.warning(None, 警告, 请输入正确的用户名和密码, QMessageBox.Ok)else:QMessageBox.warning(None, 警告, 请输入用户名和密码, QMessageBox.Ok)def retranslateUi(self, MainWindow):_translate QtCore.QCoreApplication.translateMainWindow.setWindowTitle(_translate(MainWindow, 二手商品信息管理平台登录))self.label_user.setText(_translate(MainWindow, 用户名))self.label_pwd.setText(_translate(MainWindow, 密 码))self.pushButton_login.setText(_translate(MainWindow, 登录))self.pushButton_exit.setText(_translate(MainWindow, 退出))import img_rc
import sysif __name__ __main__:app QtWidgets.QApplication(sys.argv)MainWindow QtWidgets.QMainWindow()ui Ui_MainWindow()ui.setupUi(MainWindow)MainWindow.show()sys.exit(app.exec_())
main.py
#login.py
from PyQt5 import QtCore, QtGui, QtWidgets
import dataBase
from PyQt5.QtWidgets import QMessageBox
import main
from PyQt5.QtWidgets import *class Ui_MainWindow(object):def setupUi(self, MainWindow):MainWindow.setObjectName(MainWindow)MainWindow.setWindowFlags(QtCore.Qt.MSWindowsFixedSizeDialogHint)MainWindow.resize(485, 280)self.centralwidget QtWidgets.QWidget(MainWindow)self.centralwidget.setObjectName(centralwidget)self.label QtWidgets.QLabel(self.centralwidget)self.label.setGeometry(QtCore.QRect(0, 0, 261, 281))self.label.setPixmap(QtGui.QPixmap(:/newPrefix/images/loginPIC.jpg))self.label.setObjectName(label)self.label_user QtWidgets.QLabel(self.centralwidget)self.label_user.setGeometry(QtCore.QRect(270, 70, 72, 41))self.label_user.setObjectName(label_2)self.label_pwd QtWidgets.QLabel(self.centralwidget)self.label_pwd.setGeometry(QtCore.QRect(270, 130, 72, 21))self.label_pwd.setObjectName(label_3)self.lineEdit_userName QtWidgets.QLineEdit(self.centralwidget)self.lineEdit_userName.setGeometry(QtCore.QRect(330, 80, 113, 21))self.lineEdit_userName.setObjectName(lineEdit)self.lineEdit_userPasswd QtWidgets.QLineEdit(self.centralwidget)self.lineEdit_userPasswd.setGeometry(QtCore.QRect(330, 130, 113, 21))self.lineEdit_userPasswd.setObjectName(lineEdit_2)self.lineEdit_userPasswd.setEchoMode(QtWidgets.QLineEdit.Password)self.pushButton_login QtWidgets.QPushButton(self.centralwidget)self.pushButton_login.setGeometry(QtCore.QRect(290, 190, 61, 28))self.pushButton_login.setObjectName(pushButton)self.pushButton_exit QtWidgets.QPushButton(self.centralwidget)self.pushButton_exit.setGeometry(QtCore.QRect(370, 190, 61, 28))self.pushButton_exit.setObjectName(pushButton_2)MainWindow.setCentralWidget(self.centralwidget)self.retranslateUi(MainWindow)QtCore.QMetaObject.connectSlotsByName(MainWindow)self.pushButton_exit.clicked.connect(MainWindow.close) # 关闭登录窗体self.pushButton_login.clicked.connect(self.openMain) #登录def openMain(self):dataBase.userName self.lineEdit_userName.text()userPasswd self.lineEdit_userPasswd.text()if dataBase.userName and userPasswd:result dataBase.query(select * from goods_user where userName %s and userPasswd %s, dataBase.userName, userPasswd)if len(result) 0:self.main_window QtWidgets.QMainWindow()self.main_ui main.Ui_MainWindow()self.main_ui.setupUi(self.main_window)self.main_window.show()MainWindow.hide()else:self.lineEdit_userName.setText()self.lineEdit_userPasswd.setText()QMessageBox.warning(None, 警告, 请输入正确的用户名和密码, QMessageBox.Ok)else:QMessageBox.warning(None, 警告, 请输入用户名和密码, QMessageBox.Ok)def retranslateUi(self, MainWindow):_translate QtCore.QCoreApplication.translateMainWindow.setWindowTitle(_translate(MainWindow, 二手商品信息管理平台登录))self.label_user.setText(_translate(MainWindow, 用户名))self.label_pwd.setText(_translate(MainWindow, 密 码))self.pushButton_login.setText(_translate(MainWindow, 登录))self.pushButton_exit.setText(_translate(MainWindow, 退出))import img_rc
import sysif __name__ __main__:app QtWidgets.QApplication(sys.argv)MainWindow QtWidgets.QMainWindow()ui Ui_MainWindow()ui.setupUi(MainWindow)MainWindow.show()sys.exit(app.exec_())
user.py
#user.py
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QMessageBox, QTableWidgetItem, QMainWindowimport dataBaseclass Ui_MainWindow(QMainWindow):# 构造方法def __init__(self):super(Ui_MainWindow, self).__init__()self.setWindowFlags(QtCore.Qt.MSWindowsFixedSizeDialogHint) # 只显示最小化和关闭按钮self.setupUi(self) # 初始化窗体设置def setupUi(self, MainWindow):MainWindow.setObjectName(MainWindow)MainWindow.resize(546, 423)self.centralwidget QtWidgets.QWidget(MainWindow)self.centralwidget.setObjectName(centralwidget)self.tableinfo QtWidgets.QTableWidget(self.centralwidget)self.tableinfo.setGeometry(QtCore.QRect(0, 0, 400, 420))self.tableinfo.setObjectName(tableWidget)self.tableinfo.setColumnCount(2)self.tableinfo.setRowCount(0)item QtWidgets.QTableWidgetItem()item.setTextAlignment(QtCore.Qt.AlignCenter)self.tableinfo.setHorizontalHeaderItem(0, item)item QtWidgets.QTableWidgetItem()item.setTextAlignment(QtCore.Qt.AlignCenter)self.tableinfo.setHorizontalHeaderItem(1, item)self.tableinfo.setColumnWidth(0, 195)# 调整第一列索引0的宽度到特定宽度self.tableinfo.setColumnWidth(1, 195)# 调整第二列索引1的宽度到特定宽度self.tableinfo.horizontalHeader().setSectionResizeMode(QtWidgets.QHeaderView.Stretch)#表格列将根据窗口大小自动调整宽度以填充整个表格而不会出现水平滚动条。self.pushButton_add QtWidgets.QPushButton(self.centralwidget)self.pushButton_add.setGeometry(QtCore.QRect(440, 180, 61, 31))self.pushButton_add.setObjectName(pushButton)self.label QtWidgets.QLabel(self.centralwidget)self.label.setGeometry(QtCore.QRect(400, 110, 61, 21))self.label.setObjectName(label)self.lineEdit_userName QtWidgets.QLineEdit(self.centralwidget)self.lineEdit_userName.setGeometry(QtCore.QRect(460, 110, 71, 21))self.lineEdit_userName.setObjectName(lineEdit)self.label_2 QtWidgets.QLabel(self.centralwidget)self.label_2.setGeometry(QtCore.QRect(410, 140, 51, 20))self.label_2.setObjectName(label_2)self.lineEdit_passwd QtWidgets.QLineEdit(self.centralwidget)self.lineEdit_passwd.setGeometry(QtCore.QRect(460, 140, 71, 21))self.lineEdit_passwd.setObjectName(lineEdit_2)self.pushButton_edit QtWidgets.QPushButton(self.centralwidget)self.pushButton_edit.setGeometry(QtCore.QRect(440, 230, 61, 31))self.pushButton_edit.setObjectName(pushButton_2)self.pushButton_del QtWidgets.QPushButton(self.centralwidget)self.pushButton_del.setGeometry(QtCore.QRect(440, 270, 61, 31))self.pushButton_del.setObjectName(pushButton_3)MainWindow.setCentralWidget(self.centralwidget)self.retranslateUi(MainWindow)QtCore.QMetaObject.connectSlotsByName(MainWindow)self.tableinfo.setAlternatingRowColors(True) # 使表格颜色交错显示self.tableinfo.verticalHeader().setVisible(False) # 隐藏垂直标题self.query() # 窗体加载时显示所有数据self.tableinfo.itemClicked.connect(self.getItem) # 获取选中的单元格数据self.pushButton_add.clicked.connect(self.add)self.pushButton_edit.clicked.connect(self.edit) # 绑定修改按钮的单击信号self.pushButton_del.clicked.connect(self.delete) # 绑定删除按钮的单击信号def query(self):self.tableinfo.setRowCount(0) # 清空表格中的所有行result dataBase.query(select * from goods_user) # 调用服务类中的公共方法执行查询语句row len(result) # 取得记录个数用于设置表格的行数self.tableinfo.setRowCount(row) # 设置表格行数self.tableinfo.setColumnCount(2) # 设置表格列数for i in range(row): # 遍历行for j in range(self.tableinfo.columnCount()): # 遍历列data QTableWidgetItem(str(result[i][j])) # 转换后可插入表格data.setFlags(data.flags() ~QtCore.Qt.ItemIsEditable) # 设置单元格为只读self.tableinfo.setItem(i, j, data) # 设置每个单元格的数据def getItem(self, item):if item.column() 0: # 如果点击的是第一列self.select1 item.text() # 获取点击单元格的文本row item.row() # 获取点击单元格所在的行item2 self.tableinfo.item(row, 1) # 获取同一行第二列的项if item2 is not None:self.select2 item2.text()self.lineEdit_userName.setText(self.select1) # 显示在用户名文本框中self.lineEdit_passwd.setText(self.select2) # 显示在密码文本框中if item.column() 1:self.select2 item.text()row item.row()item1 self.tableinfo.item(row, 0)if item1 is not None:self.select1 item1.text()self.lineEdit_userName.setText(self.select1)self.lineEdit_passwd.setText(self.select2)def add(self):userName self.lineEdit_userName.text() # 记录输入的用户名userPwd self.lineEdit_passwd.text() # 记录输入的用户密码if userName ! and userPwd ! : # 判断用户名和密码不为空# 执行添加语句resultdataBase.exec(insert into goods_user(userName,userPasswd) values (%s,%s),(userName,userPwd))if result0: # 如果结果大于0说明添加成功self.query() # 在表格中显示最新数据QMessageBox.information(None, 提示, 信息添加成功, QMessageBox.Ok)else:QMessageBox.warning(None, 警告, 请输入数据后再执行相关操作, QMessageBox.Ok)def edit(self):try:if self.select1!: # 判断是否选择了要修改的数据userPwd self.lineEdit_passwd.text() # 记录修改的用户密码if userPwd ! : # 判断密码不为空# 执行修改操作resultdataBase.exec(update goods_user set userPasswd %s where userName%s,(userPwd,self.select1))if result0: # 如果结果大于0说明修改成功self.query() # 在表格中显示最新数据QMessageBox.information(None, 提示, 信息修改成功, QMessageBox.Ok)except:QMessageBox.warning(None, 警告, 请先选择要修改的数据, QMessageBox.Ok)def delete(self):try:if self.select1!: # 判断是否选择了要删除的数据# 执行删除操作resultdataBase.exec(delete from goods_user where userName %s,(self.select1,))if result0: # 如果结果大于0说明删除成功self.query() # 在表格中显示最新数据QMessageBox.information(None, 提示, 信息删除成功, QMessageBox.Ok)except:QMessageBox.warning(None, 警告, 请先选择要删除的数据, QMessageBox.Ok)def retranslateUi(self, MainWindow):_translate QtCore.QCoreApplication.translateMainWindow.setWindowTitle(_translate(MainWindow, 账号密码设置))item self.tableinfo.horizontalHeaderItem(0)item.setText(_translate(MainWindow, 用户名))item self.tableinfo.horizontalHeaderItem(1)item.setText(_translate(MainWindow, 密码))self.pushButton_add.setText(_translate(MainWindow, 添加))self.label.setText(_translate(MainWindow, 用 户))self.label_2.setText(_translate(MainWindow, 密 码))self.pushButton_edit.setText(_translate(MainWindow, 修改))self.pushButton_del.setText(_translate(MainWindow, 删除))