pyqt5实践踩坑指南及实践项目(求职招聘桌面应用)

编程入门 行业动态 更新时间:2024-10-25 07:18:39

pyqt5实践踩坑指南及实践项目(<a href=https://www.elefans.com/category/jswz/34/1735310.html style=求职招聘桌面应用)"/>

pyqt5实践踩坑指南及实践项目(求职招聘桌面应用)

QWidgets子类QTextEdit常用函数

toPlainText()获得多行文本
setPlainText()设置多行文本  # 实践中倒置python程序崩溃
想要初始化textEdit文本解决方法:
使用QTextEdit.append(text)

在本学期做的招聘桌面应用中
这里只展示求职者端的代码及效果:

20220706_151829

# mianWindow.py 切换窗口主程序
import sys
sys.path.append('../Logup/')
sys.path.append('../user/')
sys.path.append('../BOOS')
sys.path.append('../Administrator')
import LogupWindow as logup
import UserWindow as user
import BoosWindow as boss
import AdministratorWindow as admfrom PyQt5.QtWidgets import QApplication, QMainWindowclass mainWindows:def __init__(self):self.logupW = logup.LoadingWindow()self.logupW.switch.connect(self.switchWindows)self.logupW.show()def switchWindows(self):self.client = self.logupW.clientself.id = self.logupW.useridself.password = self.logupW.passwordself.username = self.logupW.usernameself.identity = self.logupW.identityself.logupW.close()if self.identity == 'users':print("登录user")self.userW = user.UserWindow(self.client, self.id, self.password, self.username, self.identity)self.userW.show()elif self.identity == 'bosses':print("登录boss")# print(self.logupW.username)self.bossW = boss.BoosWindow(self.client,self.id, self.username, self.identity)self.bossW.show()else:print("登录managers")self.admW = adm.AdministratorWindow(self.client, self.id, self.password, self.username, self.identity)if __name__=="__main__":app = QApplication(sys.argv)main = mainWindows()sys.exit(app.exec_())

登录界面,我使用pyqt并给予qt designer所以对于窗口图形界面的设计这里不展示代码:

# login_db.py验证登录和注册账号的逻辑,请求服务器
import sqlite3
import json
import socketfrom TCPmodule import m_recvdef register(client, id, password, name, identity):jdata = [{'request': 'register', 'id': id, 'passwd': password, 'identity': identity, 'name': name}]client.send(json.dumps(jdata).encode())j_res = json.loads(m_recv(client))print(j_res)if j_res[0]['request_return'] == 'register':return j_res[0]['register_state']else:print('服务器返回数据出错!')return 'error'def login(client, id, password, identity):jdata = [{'request': 'login', 'id': id, 'passwd': password, 'identity': identity}]client.send(json.dumps(jdata).encode())# 服务器返回登录状态信息# '用户未注册或账号错误'# '密码错误'# '登录成功'j_res = json.loads(m_recv(client))print('登录结果:j_res', j_res)if j_res[0]['login_state'] == '用户未注册或账号错误':info = []res = [j_res[0]['login_state'], info]print(res)if j_res[0]['request_return'] == 'login':return reselse:print('服务器返回数据出错!')return 'error'elif j_res[0]['login_state'] == '密码错误':info = []res = [j_res[0]['login_state'], info]print(res)if j_res[0]['request_return'] == 'login':return reselse:print('服务器返回数据出错!')return 'error'else:info = []info.append(j_res[1]['id'])info.append(j_res[1]['password'])info.append(j_res[1]['name'])res = [j_res[0]['login_state'], info]# res = client.recv(1024).decode()print(res)if j_res[0]['request_return'] == 'login':return reselse:print('服务器返回数据出错!')return 'error'
# 登录界面主程序,调用图形界面及登录注册验证及窗口切换
from loading import *  # qt designer生成的图形界面代码
import login_db
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5 import QtCore
import socketclass LoadingWindow(QMainWindow):switch = QtCore.pyqtSignal()  # 切换窗口信号def switch_widget2(self):self.ui.widget.hide()self.hide_error()self.ui.widget_2.show()def switch_widget(self):self.ui.widget_2.hide()self.hide_error()self.ui.widget.show()def show_error(self):self.ui.label_3.setText(self.massage)self.ui.label_3.show()def hide_error(self):self.ui.label_3.hide()def __init__(self):super().__init__()self.ui = Ui_MainWindow()self.ui.setupUi(self)self.ui.widget_2.hide()self.ui.label_3.hide()self.ui.pushButton_5.clicked.connect(self.switch_widget)self.ui.pushButton_4.clicked.connect(self.switch_widget2)self.ui.pushButton_3.clicked.connect(self.logining)self.ui.pushButton_6.clicked.connect(self.registering)# 连接服务器self.client = socket.socket()host = '47.99.201.114'port = 1010self.client.connect((host, port))# 隐藏窗口self.setWindowFlag(QtCore.Qt.FramelessWindowHint)self.setAttribute(QtCore.Qt.WA_TranslucentBackground)self.show()def mousePressEvent(self, event):if event.button() == QtCore.Qt.LeftButton and self.isMaximized() == False:self.m_flag = Trueself.m_Position = event.globalPos() - self.pos()event.accept()self.setCursor(QtGui.QCursor(QtCore.Qt.OpenHandCursor))def mouseMoveEvent(self, mouse_event):if QtCore.Qt.LeftButton and self.m_flag:self.move(mouse_event.globalPos() - self.m_Position)mouse_event.accept()def mouseReleaseEvent(self, mouse_event):self.m_flag = Falseself.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor))def logining(self):self.userid = self.ui.lineEdit.text()print(self.userid)self.password = self.ui.lineEdit_2.text()print(self.password)if self.ui.radioButton.isChecked():self.identity = 'users'elif self.ui.radioButton_2.isChecked():self.identity = 'managers'elif self.ui.radioButton_5.isChecked():self.identity = 'bosses'else:self.massage = '未选择身份!'self.show_error()if self.userid=='':self.massage = '用户名为空!'self.show_error()print("账号输入",self.userid,self.password,self.identity)print('login_db')a = login_db.login(self.client, self.userid, self.password, self.identity)print('a等于', a)if a[0] == '用户未注册或账号错误':self.massage = '用户未注册或账号错误!'print('用户未注册或账号错误!')self.show_error()elif a[0] == '密码错误':self.massage = '密码错误!'print('密码错误!')self.show_error()else:self.userid = a[1][0]self.password = a[1][1]self.username = a[1][2]print('登录成功!', self.identity)self.switch.emit()# if a > 0:#     print('登录成功!')# else:#     self.massage = '用户名或密码错误!'#     print('用户名或密码错误!')#     self.show_error()def registering(self):self.userid = self.ui.lineEdit_4.text()print(self.userid)if self.userid == '':self.massage='用户名为空!'self.show_error()self.password = self.ui.lineEdit_3.text()print(self.password)self.password_2 = self.ui.lineEdit_5.text()if self.password != self.password_2:print('确认密码错误!')self.massage = '确认密码错误!'self.show_error()returnelse:if self.ui.radioButton_4.isChecked():self.identity = 'users'elif self.ui.radioButton_6.isChecked():self.identity = 'bosses'else:print('未选择身份')self.massage = '未选择身份'self.show_error()self.username = self.ui.lineEdit_6.text()print("昵称", self.username)a = login_db.register(self.client, self.userid, self.password, self.username, self.identity)if a == '注册成功':self.massage = '注册成功!'self.show_error()else:self.massage = 'ERROR注册失败!'self.show_error()if __name__ == '__main__':app = QApplication(sys.argv)win = LoadingWindow()sys.exit(app.exec_())

求职者登录成功后跳转到用户窗口

# UserWindow.py主程序,调度各种小窗口
from PyQt5.QtChart import QPieSeries, QChart, QPieSlice
import addjianli as jianlifrom TCPmodule import m_recv
from userUI import *
import pyqdetail as detail
import pymysql
import sys
import json
import _thread
import time
from PyQt5.QtWidgets import QWidget, QTableView, QAbstractItemView, QToolTip, qApp, QPushButton, QLabel, QVBoxLayout, \QHBoxLayout, QApplication, QMainWindow, QHeaderView, QMessageBoxfrom PyQt5.QtCore import Qt, QStringListModel
from PyQt5.QtGui import QStandardItemModel, QStandardItem, QCursor, QFont, QPainter# self.client, self.id, self.password, self.username, self.identity
class UserWindow(QMainWindow):def __init__(self, client, userid, password, username, identity):super().__init__()self.ui = Ui_MainWindow()self.ui.setupUi(self)self.messagelist = []  # *********************self.slm = QStringListModel()self.slm.setStringList(self.messagelist)self.ui.listView.setModel(self.slm)self.ui.pushButton_3.clicked.connect(self.sendresume)self.ui.pushButton_4.clicked.connect(self.addjianli)self.ui.pushButton_5.clicked.connect(self.zhuxiao)self.userid = useridself.password = passwordself.username = usernameself.identity = identityself.ui.label_5.setText(self.username)self.ui.label_6.setText(self.userid)print("启动user窗口")# 隐藏窗口self.setWindowFlag(QtCore.Qt.FramelessWindowHint)self.setAttribute(QtCore.Qt.WA_TranslucentBackground)self.show()self.client = clienttry:self.getdata()except:print("启动线程1失败", sys.exc_info()[0])try:self.getchartdetail()except:print("启动线程2失败", sys.exc_info()[0])def getdata(self):print("开始查询getdata")sql = "SELECT jobName,jobCompany,jobSalary,jobPlace,jobOfferid,jobDescribe,jobEducation,jobExperience FROM jobOfferDetail;"jdata = [{'request': 'getJobDetailSQL', 'sql': sql}]self.client.send(json.dumps(jdata).encode())jres = json.loads(m_recv(self.client))print("jres是", jres)print("jres[0]['num']", jres[0]['num'])self.all_job_datas = []self.all_job_datas.append(jres[0]['num'])self.all_job_datas.append([])for i in range(0, jres[0]['num']):job = []job.append(jres[i + 1]['jobName'])job.append(jres[i + 1]['jobCompany'])job.append(jres[i + 1]['jobSalary'])job.append(jres[i + 1]['jobPlace'])job.append(jres[i + 1]['jobOfferid'])job.append(jres[i + 1]['jobDescribe'])job.append(jres[i + 1]['jobEducation'])job.append(jres[i + 1]['jobExperience'])self.all_job_datas[1].append(job)print(self.all_job_datas)print('self.userid', self.userid)sql2 = "SELECT jobName,jobCompany,jobSalary,jobPlace,jobOfferid FROM jobOfferDetail WHERE jobOfferid IN (SELECT jobOfferid FROM resume WHERE id =\'{}\');".format(self.userid)print('sql2', sql2)jdata = [{'request': 'getJobDetailSQL', 'sql': sql2}]self.client.send(json.dumps(jdata).encode())jres = json.loads(m_recv(self.client))print("jres是", jres)print("jres[0]['num']", jres[0]['num'])self.all_job_datas2 = []self.all_job_datas2.append(jres[0]['num'])self.all_job_datas2.append([])for i in range(0, jres[0]['num']):job = []job.append(jres[i + 1]['jobName'])job.append(jres[i + 1]['jobCompany'])job.append(jres[i + 1]['jobSalary'])job.append(jres[i + 1]['jobPlace'])job.append(jres[i + 1]['jobOfferid'])self.all_job_datas2[1].append(job)print(self.all_job_datas2)self.column_name = ['工作名称', '公司', '薪酬', '工作地点']self.model = QStandardItemModel(self.all_job_datas[0], 4)self.model2 = QStandardItemModel(self.all_job_datas2[0], 4)self.model.setHorizontalHeaderLabels(self.column_name)self.model2.setHorizontalHeaderLabels(self.column_name)self.table_view = self.ui.tableViewself.table_view_2 = self.ui.tableView_2self.table_view.setSelectionMode(QAbstractItemView.SingleSelection)  # 选中一个单元格self.table_view.setSelectionBehavior(QAbstractItemView.SelectItems)  # 单元格选中模式self.table_view.doubleClicked.connect(self.get_table_item)self.table_view.clicked.connect(self.get_cell_tip)self.table_view.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)  # 使表宽度自适应self.table_view_2.setSelectionMode(QAbstractItemView.SingleSelection)  # 选中一个单元格self.table_view_2.setSelectionBehavior(QAbstractItemView.SelectItems)  # 单元格选中模式self.table_view_2.doubleClicked.connect(self.get_table_item)self.table_view_2.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)  # 使表宽度自适应for i in range(self.all_job_datas[0]):for j in range(4):job_info = QStandardItem(str(self.all_job_datas[1][i][j]))self.model.setItem(i, j, job_info)job_info.setTextAlignment(Qt.AlignHCenter | Qt.AlignVCenter)for i in range(self.all_job_datas2[0]):for j in range(4):job_info = QStandardItem(str(self.all_job_datas2[1][i][j]))self.model2.setItem(i, j, job_info)job_info.setTextAlignment(Qt.AlignHCenter | Qt.AlignVCenter)self.table_view.setEditTriggers(QAbstractItemView.NoEditTriggers)  # 表格不可编辑self.table_view_2.setEditTriggers(QAbstractItemView.NoEditTriggers)  # 表格不可编辑self.table_view.setModel(self.model)self.table_view_2.setModel(self.model2)print("getdata结束")returndef get_cell_tip(self):""" 设置单元格提示信息 """contents = self.table_view.currentIndex().data()self.row = self.table_view.currentIndex().row()  # 获取所在行数print("选中行数为", self.row)print("all_job_datas", self.all_job_datas)self.jobOfferid = self.all_job_datas[1][self.row][4]print("选中工作id为", self.jobOfferid)QToolTip.showText(QCursor.pos(), contents)def get_table_item(self, index):"""获取表格中的数据"""col = index.column()row = index.row()tmp = self.all_job_datas[1][row]print(tmp)m_detail = {'jobName':tmp[0], 'jobCompany':tmp[1], 'jobSalary':tmp[2], 'jobPlace':tmp[3], 'jobDescribe':tmp[5], 'jobEducation':tmp[6], 'jobExperience':tmp[7]}self.show_detail = detail.pyqdetail(m_detail)self.show_detail.show()def getchartdetail(self):sql = "SELECT jobEducation, COUNT(*) AS eduNum FROM jobOfferDetail GROUP BY jobEducation;"jdata = [{'request': 'getJobDetailSQL', 'sql': sql}]self.client.send(json.dumps(jdata).encode())jres = json.loads(m_recv(self.client))print("饼图1是", jres)print("jres[0]['num']", jres[0]['num'])num = jres[0]['num']data = []for i in range(0, num):index = []index.append(jres[i + 1]['jobEducation'])index.append(jres[i + 1]['eduNum'])data.append(index)print("data", data)sql = "SELECT jobPlace, COUNT(*) AS placeNum FROM jobOfferDetail GROUP BY jobPlace;"jdata = [{'request': 'getJobDetailSQL', 'sql': sql}]self.client.send(json.dumps(jdata).encode())jres = json.loads(m_recv(self.client))print("饼图2是", jres)print("jres[0]['num']", jres[0]['num'])num2 = jres[0]['num']data2 = []for i in range(0, num2):index = []index.append(jres[i + 1]['jobPlace'])index.append(jres[i + 1]['placeNum'])data2.append(index)print("data2", data2)self.color = ["#ffc656", "#2fc7e8", "#3ed7b7", "#0099CC", "#99CC66", "#CCCCCC", "#FF6666", "#333399", "#FF0033","#FFFF00", "#FFCCCC", "#003399", "#99CC00", "#009999", "#990066", "#666699"]self.pieseries1 = QPieSeries()self.pieseries1.hovered.connect(self.do_pieHover)for x in data:self.pieseries1.append(x[0], x[1])print(x[0], x[1])self.slice = QPieSlice()print(1)for i in range(0, num):self.slice = self.pieseries1.slices()[i]self.slice.setLabelVisible(False)# slice.setPen(QPen(Qt.white, 10))self.slice.setBrush(QtGui.QColor(self.color[i]))self.pieseries2 = QPieSeries()self.pieseries2.hovered.connect(self.do_pieHover)for x in data2:self.pieseries2.append(x[0], x[1])print(x[0], x[1])self.slice2 = QPieSlice()print(1)for i in range(0, num2):self.slice2 = self.pieseries2.slices()[i]self.slice2.setLabelVisible(False)# slice.setPen(QPen(Qt.white, 10))self.slice2.setBrush(QtGui.QColor(self.color[i]))self.chart1 = QChart()  # 定义QChartself.chart2 = QChart()self.chart1.legend().hide()self.chart2.legend().hide()self.chart1.createDefaultAxes()self.chart2.createDefaultAxes()self.chart1.addSeries(self.pieseries1)self.chart2.addSeries(self.pieseries2)self.chart1.setTitle("教育分布")self.chart2.setTitle("地区分布")self.chart1.legend().setVisible(True)self.chart2.legend().setVisible(True)self.chart1.legend().setAlignment(Qt.AlignBottom)self.chart2.legend().setAlignment(Qt.AlignBottom)self.chartview = self.ui.chartviewself.chartview_2 = self.ui.chartview_2self.chart1.setAnimationOptions(QChart.SeriesAnimations)self.chart2.setAnimationOptions(QChart.SeriesAnimations)self.chartview.setRenderHint(QPainter.Antialiasing)self.chartview_2.setRenderHint(QPainter.Antialiasing)self.chartview.setChart(self.chart1)self.chartview.show()self.chartview_2.setChart(self.chart2)self.chartview_2.show()def do_pieHover(self, sli, states):if states:sli.setExploded(True)sli.setLabelVisible(True)else:sli.setExploded(False)sli.setLabelVisible(False)def sendresume(self):print("投递")sql = "SELECT * FROM resume WHERE id=\'{}\' AND jobOfferid={};".format(self.userid, self.jobOfferid)print('sql', sql)jdata = [{'request': 'getJobDetailSQL', 'sql': sql}]self.client.send(json.dumps(jdata).encode())jres = json.loads(m_recv(self.client))print("jres[0]['num']", jres[0]['num'])num = jres[0]['num']if num == 0:sql2 = "INSERT INTO resume VALUES ({},{});".format(self.userid, self.jobOfferid)print("sql2", sql2)jdata = [{'request': 'getJobDetailSQL', 'sql': sql2}]self.client.send(json.dumps(jdata).encode())jres = json.loads(m_recv(self.client))print("插入返回结果", jres[0]['num'])message = "投递简历至{}成功!".format(self.all_job_datas[1][self.row][0])self.messagelist.append(message)self.slm.setStringList(self.messagelist)try:_thread.start_new_thread(self.getdata, ())message = "刷新成功!"self.messagelist.append(message)self.slm.setStringList(self.messagelist)except:print("刷新失败")def addjianli(self):self.jianliWindow = jianli.addjianli(self.client, self.userid, self.identity)self.jianliWindow.show()self.jianliWindow.addsuccess.connect(self.addmessage)  # 简历上传成功后显示信息def addmessage(self, message):self.jianliWindow.close()self.messagelist.append(message)self.slm.setStringList(self.messagelist)def mousePressEvent(self, event):if event.button() == QtCore.Qt.LeftButton and self.isMaximized() == False:self.m_flag = Trueself.m_Position = event.globalPos() - self.pos()event.accept()self.setCursor(QtGui.QCursor(QtCore.Qt.OpenHandCursor))def mouseMoveEvent(self, mouse_event):if QtCore.Qt.LeftButton and self.m_flag:self.move(mouse_event.globalPos() - self.m_Position)mouse_event.accept()def mouseReleaseEvent(self, mouse_event):self.m_flag = Falseself.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor))def zhuxiao(self):res = QMessageBox.question(self, "确认注销账号", "账号注销数据无法恢复!", QMessageBox.Yes | QMessageBox.Cancel)if res == QMessageBox.Yes:sql = "DELETE FROM {} WHERE id=\'{}\';".format(self.identity, self.userid)print("删除账号", sql)jdata = [{'request': 'getAccDetailSQL', 'sql': sql}]self.client.send(json.dumps(jdata).encode())jres = json.loads(m_recv(self.client))if jres[0]['num'] == 1:QMessageBox.about(self, '注销账号', '成功!')self.close()else:QMessageBox.critical(self, '注销账号失败', '可能存在网络问题')else:returnif __name__ == '__main__':app = QApplication(sys.argv)win = UserWindow()sys.exit(app.exec_())
# addjianli.py 填写上传简历代码
import json
import sys
import _threadfrom PyQt5.QtWidgets import QMainWindow, QApplication, QMessageBoxfrom TCPmodule import m_recv
from jianli import *  # 图形界面代码
from PyQt5 import QtCore
import socketclass addjianli(QMainWindow):addsuccess = QtCore.pyqtSignal(str)  # 上传完成信号def __init__(self, client, userid, identity):super().__init__()self.ui = Ui_MainWindow()self.ui.setupUi(self)self.userid = useridself.identity = identityself.mode = False  # mode为false说明第一次上传简历 ,为true说明时修改简历print("启动user窗口")# 隐藏窗口self.setWindowFlag(QtCore.Qt.FramelessWindowHint)self.setAttribute(QtCore.Qt.WA_TranslucentBackground)self.show()self.client = clientself.ui.pushButton_3.clicked.connect(self.addresume)try:_thread.start_new_thread(self.getresumm, ())except:print('获取简历失败')def getresumm(self):sql = "SELECT * FROM personalResume WHERE id=\'{}\';".format(self.userid)jdata = [{'request': 'getJobDetailSQL', 'sql': sql}]self.client.send(json.dumps(jdata).encode())jres = json.loads(m_recv(self.client))print("jres[0]['num']", jres[0]['num'])num = jres[0]['num']if num == 0:self.mode = Falseprint("mode是", self.mode)else:self.mode = Trueprint("mode是", self.mode)datas = jres[1]print("已有简历", datas)self.ui.lineEdit.setText(datas['name'])self.ui.lineEdit_2.setText(str(datas['age']))self.ui.lineEdit_3.setText(datas['education'])self.ui.lineEdit_4.setText(datas['major'])self.ui.lineEdit_5.setText(datas['school'])print(datas['experience'])self.ui.textEdit.append(datas['experience'])print("a")if datas['sex'] == 'm':print("b")self.ui.radioButton.setChecked(True)print("c")else:print("d")self.ui.radioButton_2.setChecked(True)print("e")def addresume(self):name = self.ui.lineEdit.text()age = int(self.ui.lineEdit_2.text())print('age', age)education = self.ui.lineEdit_3.text()print(1)major = self.ui.lineEdit_4.text()print(2)school = self.ui.lineEdit_5.text()print(3)experience = self.ui.textEdit.toPlainText()print(4)if self.ui.radioButton.isChecked():print(5)sex = 'm'elif self.ui.radioButton_2.isChecked():print(6)sex = 'f'else:print(7)sex = ''print("输入信息为{},{},{},{},{},{},{},{}".format(name, age, education, major, school, experience, sex, self.userid))if name == '' or age == '' or education == '' or major == '' or school == '' or experience == '' or sex == '':print('waring')QMessageBox.warning(self, 'ERROR', '信息不完整')else:print('send')if self.mode:  # 更新简历sql = "UPDATE personalResume SET name=\'{}\', age={}, education=\'{}\', major=\'{}\', school=\'{}\', experience=\'{}\', sex=\'{}\' WHERE id=\'{}\';".format(name, age, education, major, school, experience, sex, self.userid)else:sql = "INSERT INTO personalResume VALUES ( '{}\',\'{}\',\'{}\',{},\'{}\',\'{}\',\'{}\',\'{}\');".format(self.userid, name, sex, age, education, major, school, experience)jdata = [{'request': 'getJobDetailSQL', 'sql': sql}]self.client.send(json.dumps(jdata).encode())jres = json.loads(m_recv(self.client))print('上传简历', jres[0]['num'])self.addsuccess.emit("上传简历成功!")def mousePressEvent(self, event):if event.button() == QtCore.Qt.LeftButton and self.isMaximized() == False:self.m_flag = Trueself.m_Position = event.globalPos() - self.pos()event.accept()self.setCursor(QtGui.QCursor(QtCore.Qt.OpenHandCursor))def mouseMoveEvent(self, mouse_event):if QtCore.Qt.LeftButton and self.m_flag:self.move(mouse_event.globalPos() - self.m_Position)mouse_event.accept()def mouseReleaseEvent(self, mouse_event):self.m_flag = Falseself.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor))if __name__ == '__main__':app = QApplication(sys.argv)win = addjianli()sys.exit(app.exec_())
# pyqdetail.py 查看招聘信息详情
import json
import sys
import _threadfrom PyQt5.QtWidgets import QMainWindow, QApplication, QMessageBox
from PyQt5.QtGui import QStandardItemModel, QStandardItem, QCursor, QFont, QPainterfrom TCPmodule import m_recv
from detail import *  # 显示招聘信息详情的小窗口图形界面代码
from PyQt5 import QtCoreclass pyqdetail(QMainWindow):def __init__(self, detail):super().__init__()self.ui = Ui_MainWindow()self.ui.setupUi(self)self.ui.lineEdit.setText(detail['jobName'])self.ui.lineEdit_2.setText(detail['jobCompany'])self.ui.lineEdit_3.setText(detail['jobSalary'])self.ui.lineEdit_4.setText(detail['jobPlace'])self.ui.lineEdit_5.setText(detail['jobEducation'])self.ui.lineEdit_6.setText(detail['jobExperience'])self.ui.textEdit.setText(detail['jobDescribe'])self.setWindowFlag(QtCore.Qt.FramelessWindowHint)self.setAttribute(QtCore.Qt.WA_TranslucentBackground)self.show()def mousePressEvent(self, event):if event.button() == QtCore.Qt.LeftButton and self.isMaximized() == False:self.m_flag = Trueself.m_Position = event.globalPos() - self.pos()event.accept()self.setCursor(QtGui.QCursor(QtCore.Qt.OpenHandCursor))def mouseMoveEvent(self, mouse_event):if QtCore.Qt.LeftButton and self.m_flag:self.move(mouse_event.globalPos() - self.m_Position)mouse_event.accept()def mouseReleaseEvent(self, mouse_event):self.m_flag = Falseself.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor))

更多推荐

pyqt5实践踩坑指南及实践项目(求职招聘桌面应用)

本文发布于:2024-02-11 18:04:28,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1682464.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:求职招聘   桌面   指南   项目

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!