当前位置: 首页 > news >正文

邵阳建网站多少钱艺术作品欣赏网站

邵阳建网站多少钱,艺术作品欣赏网站,广网站建设,wordpress 系统需求1、任务概述 本次计划的核心任务是开发一个#xff0c;个人版的公共用例库#xff0c;旨在将各系统和各类测试场景下的通用、基础以及关键功能的测试用例进行系统性地归纳整理#xff0c;并以提高用例的复用率为目标#xff0c;力求最大限度地减少重复劳动#xff0c;提升…1、任务概述 本次计划的核心任务是开发一个个人版的公共用例库旨在将各系统和各类测试场景下的通用、基础以及关键功能的测试用例进行系统性地归纳整理并以提高用例的复用率为目标力求最大限度地减少重复劳动提升测试效率。   计划内容完成公共用例库的开发实施工作包括需求分析、系统设计、开发、测试、打包、运行维护等工作。 1.1、 已完成 需求分析、数据库表的设计公共用例库计划–个人版一   主体界面与逻辑设计公共用例库计划–个人版二   导出Excel功能公共用例库计划–个人版三   模块选择功能改造与性能优化公共用例库计划–个人版四   QtCharts制作首页饼图与柱状图公共用例库计划–个人版五 1.2、 本次待完成 典型Bug新增遇见的较典型的bug进行复盘与经验总结。   1. bug、图片的库表设计   2. 典型Bug页面界面设计   3. 逻辑代码开发 2、bug、图片的库表设计 计划创建两张表一张表存放bug信息一张表保存bug的图片。 建表语句 # 创建bug表self.cursor.execute( CREATE TABLE IF NOT EXISTS bug ( bugid INTEGER PRIMARY KEY AUTOINCREMENT, --编号title TEXT NOT NULL, --标题types INTEGER , --类型--对应码值表code40-49difficulty INTEGER , --难度--对应码值表code30-36moduleid INTEGER , --所属模块describe TEXT , --描述think TEXT , --思考severity INTEGER --严重程度--对应码值表code50-53))# 创建图片表self.cursor.execute( CREATE TABLE IF NOT EXISTS image ( imageid INTEGER PRIMARY KEY AUTOINCREMENT, --编号name TEXT NOT NULL, --名称image_bytes BLOB , --图片bugid INTEGER --所属bug))3、典型Bug页面 主要功能设计介绍   左侧使用listWidget显示bug列表有翻页功能。   主体上面把用例页面的查询条件copy过来改改选择条件对左边列表的bug进行查询。   主体中部点击左侧列表中bug名称显示对应bug的详细信息。有图片上传按钮显示图片、翻页等功能按钮。 最后建了一个窗口放一个graphicsView控件显示大图。上面页面图片是label显示的担心显示太小了 4、bug新增代码开发 4.1 保存bug 在设计页面时对保存按钮增加信号槽点击保存触发save_bug。 对标题、描述进行 必填验证。如果有获取到bugid就走编辑流程没有就新增bug。 def save_bug(self):bug页面保存if not self.lineEdit_4.text() or self.textEdit.toPlainText() [步骤]\n\n[结果]\n\n[期望]\n:self.ts.xinxi(标题或描述不能为空)returnself.save_bug_b.setEnabled(False) # 保存按钮置灰partsself.mk_2.currentText().split(—ID:) # 模块编号if len(parts) 2:self.mk_2.mkidparts[1]else:self.mk_2.mkidif self.bugid ! 0: # 编辑vlue(f{self.lineEdit_4.text()},tc_sql.codes_dict[mk_types][f{self.lileixing_bug_2.currentText()}],tc_sql.codes_dict[difficulty][f{self.nandu_2.currentText()}],f{self.mk_2.mkid}, f{self.textEdit.toPlainText()},f{self.textEdit_2.toPlainText()},tc_sql.codes_dict[severity][f{self.nandu_3.currentText()}], f{self.bugid})self.savesql_bug(update bug set title? ,types? ,difficulty?, moduleid? ,describe ?,think ?,severity? where bugid?,vlue)else: # 新增vlue(f{self.lineEdit_4.text()},tc_sql.codes_dict[mk_types][f{self.lileixing_bug_2.currentText()}],tc_sql.codes_dict[difficulty][f{self.nandu_2.currentText()}],f{self.mk_2.mkid}, f{self.textEdit.toPlainText()},f{self.textEdit_2.toPlainText()},tc_sql.codes_dict[severity][f{self.nandu_3.currentText()}])self.savesql_bug(INSERT INTO bug VALUES (NULL,?,?,?,?,?,?,?), vlue)def savesql_bug(self, sql, vlue):bug保存sqlself.case_db.connect()if self.case_db.operate_one(sql, vlue):self.case_db.over()self.chaxun_bug() # 查询列表self.ts.xinxi(保存成功)logging.info(bug页面保存)else:self.ts.xinxi(保存失败请检查)self.save_bug_b.setEnabled(True) # 保存按钮恢复4.2 bug查询 在设计页面时对每一个查询条件设计信号槽触发查询按钮查询按钮触发chaxun_bug。 先获取查询条件的信息然后通过拼接条件sql查询出对应的bug写入bug列表显示。 def chaxun_bug(self, ye1):bug页面查询partsself.mk_1.currentText().split(—ID:)if len(parts) 2:self.mk_1.mkidparts[1]else:self.mk_1.mkidmk_typestc_sql.codes_dict[mk_types][f{self.lileixing_bug.currentText()}] if self.lileixing_bug.currentText() else difficultytc_sql.codes_dict[difficulty][self.nandu.currentText()] if self.nandu.currentText() else dic{bug.types: mk_types,bug.difficulty: difficulty,bug.moduleid: self.mk_1.mkid}dic_like{bug.title: self.biaoti_bug.text()}sql1select bugid || : || title from bug where # 拼接sql查询条件sql2select count(*) from bug wherefor k, v in dic.items():if v:sql1 k str(v) andsql2 k str(v) andfor k, v in dic_like.items():if v:sql1 k like % v % andsql2 k like % v % andoffset20 * (ye - 1) # 分页查询sql1sql1.rstrip(where).rstrip(and) order by bug.bugid DESC fLIMIT 20 OFFSET {offset}sql2sql2.rstrip(where).rstrip(and)self.case_db.connect()itemsself.case_db.query_many(sql1) # bug查询countself.case_db.query_one(sql2)self.bugye_countmath.ceil(count[0] / 20) # 页数计算self.case_db.over()self.listWidget.clear() # 清空列表self.clear_bug() # 清空页面if items:for i in range(len(items)): # 数据写入列表itemQListWidgetItem(items[i][0])item.setToolTip(items[i][0]) # 写入提示self.listWidget.addItem(item)self.label_24.setText(f总数: {count[0]}条 共: {self.bugye_count}页 )self.lineEdit_3.setText(f{ye})else:self.listWidget.addItem(未查询到数据) # 查询无数据加空行self.label_24.setText(f总数: 0条 共: 0页 )self.lineEdit_3.setText(0)logging.info(bug页面查询)4.3 bug详情 查询出bug列表后点击其中的bug页面显示详情。对列表增加槽函数点击触发show_bug。 获取点击的bugID根据bugid查询出信息回显到页面。 def show_bug(self):点击bug显示bug详情aself.listWidget.selectedItems()if a:partsa[0].text().split(:)if len(parts) 2:self.bugidparts[0]else:self.bugid0returnsql26select bug.title,codes1.value as types,codes2.value as difficulty,module.modulename || —ID: || module.moduleid,bug.describe,bug.think,codes3.value as severityfrom bug INNER JOINcodes AS codes1 ON bug.types codes1.id AND codes1.id BETWEEN 40 AND 49 -- 关联类型码值表INNER JOINcodes AS codes2 ON bug.difficulty codes2.id AND codes2.id BETWEEN 30 AND 36 -- 关联难度码值表INNER JOINcodes AS codes3 ON bug.severity codes3.id AND codes3.id BETWEEN 50 AND 53LEFT JOINmodule ON bug.moduleid module.moduleid where bug.bugid ? self.case_db.connect()itemsself.case_db.query_one(sql26, (self.bugid,)) # bug查询self.case_db.over()# bug详情回显self.lineEdit_4.setText(items[0])indexself.lileixing_bug_2.findText(items[1], Qt.MatchFlag.MatchFixedString)self.lileixing_bug_2.setCurrentIndex(index) # 设置下拉框内容index2self.nandu_2.findText(items[2], Qt.MatchFlag.MatchFixedString)self.nandu_2.setCurrentIndex(index2)self.mk_2.clear() # 清空模块下拉self.mk_2.addItem(items[3])self.mk_2.setCurrentIndex(0) # 设置模块下拉显示self.textEdit.setText(items[4])self.textEdit_2.setText(items[5])index3self.nandu_3.findText(items[6], Qt.MatchFlag.MatchFixedString)self.nandu_3.setCurrentIndex(index3)logging.info(显示bug详情)4.4 实现情况 现在bug新增查询修改没问题。 5、图片管理 bug保存后上传图片。有删除、图片翻页、查看大图功能 5.1 图片上传 上传图片按钮触发函数up_image。 对图片大小、格式限制然后将图片转成Base64格式存入数据库。 def up_image(self):上传bug图片if self.bugid 0:self.ts.xinxi(未获取到bugID请先选择或者保存bug)returnMAX_IMAGE_SIZE1.5 * 1024 * 1024 # 图片大小限制例如5MBtry:filename, _QFileDialog.getOpenFileName(self, 选择图片, ,Image Files (*.jpg *.jpeg *.png *.bmp *.gif))if not filename: # 未选择图片退出returnnamefilename.split(/)[-1]file_sizeos.path.getsize(filename) # 检查文件大小if file_size MAX_IMAGE_SIZE:self.ts.xinxi(f图片大小超过限制({MAX_IMAGE_SIZE / (1024 * 1024)}MB)请上传更小的图片)else:imgImage.open(filename)img.save(f_internal/{name}, quality90) # 压缩图片with open(f_internal/{name}, rb) as image_file:contentbase64.b64encode(image_file.read()) # 转换成Base64格式os.remove(f_internal/{name})self.case_db.connect()sqlfINSERT INTO main.image (name, image_bytes,bugid) VALUES (?, ?, ?);if self.case_db.operate_one(sql, (name, content, self.bugid)):self.case_db.over()self.show_image(self.bugid)logging.info(上传bug图片)else:self.ts.xinxi(图片上传出错)except Exception as e:self.ts.xinxi(f上传出错{e})logging.error(e)数据库中存入的图片。 5.2 图片显示 图片上传后就触发显示函数。将查询bug的图片显示到label 首先对图像显示区域进行清理如果查询到图片将显示图片、名称、页数。 def show_image(self, bugid, number0):根据bugID查询bug图片self.label_image.setText(暂无图片) # 清空bug图片区域数据self.pushButton_10.setVisible(False) # 删除图片按钮隐藏self.label_15.clear()self.label_34.clear()self.imageidNoneself.case_db.connect()sqlfSELECT image_bytes,imageid,name FROM image WHERE bugid? LIMIT 1 OFFSET {number} valueself.case_db.query_one(sql, (bugid,))countself.case_db.query_one(fSELECT count(*) FROM image WHERE bugid? , (bugid,))self.case_db.over()if value: # 显示图片、数量、名称self.imageidvalue[1]str_encodebase64.b64decode(value[0]) # base64编码对应的解码解码完字符串pixmapQPixmap()pixmap.loadFromData(str_encode)self.label_image.clear()scaled_pixmappixmap.scaled(self.label_image.size(), Qt.AspectRatioMode.KeepAspectRatio)self.label_image.setPixmap(scaled_pixmap)self.label_15.setText(f{number 1}/{count[0]}) # 数量self.label_34.setText(f{value[2]})self.pushButton_10.setVisible(True) # 删除图片按钮显示logging.info(bug图片显示)5.3 图片上传实现 5.4 大图窗口 点击页面图片触发大图窗口。 def image_clicked(self, event):点击图片打开图片窗口if self.imageid:self.case_db.connect()sqlfSELECT image_bytes FROM image WHERE imageid?valueself.case_db.query_one(sql, (self.imageid,))self.case_db.over()str_encodebase64.b64decode(value[0])if not self.child_windows:image_maxImage_bug(str_encode)self.child_windows.append(image_max) # 将新打开的窗口添加到子窗口列表else:self.child_windows[0].update_image(str_encode) # 已有窗口更新图片logging.info(bug图片大图窗口)大图窗口继承界面设计好的窗口。 使用单例模式只允许打开一个窗口再次点击图片就更新窗口图片显示。 对鼠标滚轮进行重写实现放大缩小图片。 class Image_bug(QWidget, Ui_imagemax):图片页面_instanceNonedef __new__(cls, str_encode, parentNone):if cls._instance is None:instancesuper().__new__(cls)instance.__init__(str_encode, parent)cls._instanceinstance # 保存到类变量以便后续使用return instanceelse:cls._instance.update_image(str_encode) # 更新现有实例的图像数据return cls._instancedef __init__(self, str_encode, parentNone):if self._instance: # 避免多次初始化同一个实例returnsuper().__init__(parent)self.str_encodestr_encodeself.setupUi(self)self.init_image()def init_image(self):窗口加载图片显示pixmapQPixmap()pixmap.loadFromData(self.str_encode)sceneQGraphicsScene()# 创建图形视图、场景及图像项目itemQGraphicsPixmapItem(pixmap)scene.addItem(item)self.graphicsView.setScene(scene)# 设置视图与场景self.graphicsView.wheelEventself.wheelEvent_handler # 重写滚轮事件处理函数self.show()def update_image(self, new_str_encode):更新窗口图片self.str_encodenew_str_encodeself.init_image() # 重新加载图片数据self.activateWindow() # 激活窗口self.raise_() # 提升窗口至最前面def wheelEvent_handler(self, event):滚轮放大缩小图片zoom_in_factor1.25zoom_out_factor1 / zoom_in_factordeltaevent.angleDelta().y() / 120if delta 0:factorzoom_in_factorelif delta 0:factorzoom_out_factorelse:return# 获取当前鼠标位置在视图坐标系中的位置mouse_pos_scene self.graphicsView.mapToScene(QPoint(int(event.position().x()), int(event.position().y())))# 记录原始视图中心点old_centerself.graphicsView.viewport().rect().center()# 缩放视图self.graphicsView.scale(factor, factor)# 计算新的视图中心点并确保鼠标下的内容不变new_center self.graphicsView.mapFromScene(mouse_pos_scene).toPointF()self.graphicsView.centerOn(new_center)5.5 大图窗口放大缩小图片实现
http://www.zqtcl.cn/news/509250/

相关文章:

  • 适合网站开发工程师的公司图片百度搜索
  • 网站界面设计需求wordpress single.php
  • 比较权威的房产网站合肥瑶海区地图全图高清版
  • 网站建设公司果动小学电教检查网站建设资料
  • 电子商务网站设计成功的要素青岛网页设计师
  • 门户网站平台建设方案网站开发后如何上线
  • 濮阳做网站的番禺区网络推广渠道
  • 杭州网站seo外包外链图片
  • 苏州网站建设有限公司枣阳建网站
  • 网站开发平台选择如何制作购物网站
  • 专业建设网站企业外包公司企业网站
  • 网站开发需求确认书国家商标注册官网查询系统
  • 国内个人网站建设wordpress 添加搜索
  • 网站建设创新简述网站开发具体流程
  • wordpress小说网站模板南宁企业网站seo
  • 网站开发与设计课程时间网站推广的搜索引擎推广
  • 网站首页幻灯片不显示网页设计制作项目
  • 遂宁网站建设哪家好深圳做响应式网站设计
  • 慈溪建设企业网站wordpress 增加分类字段
  • 毕业设计做系统网站wordpress修改评论框
  • 上海网站开发孵化设计者联盟官网
  • 旅游网站开发需求报告微信创建小程序
  • 不收费推广网站有哪些h5网站要多久
  • seo网站营销推广全...互联网创业好项目
  • vx小程序制作网站优化标题怎么做
  • 做旅游网站课程设计报告湘潭学校网站建设 x磐石网络
  • 接网站 建设没有网站可以做seo排名吗
  • 抚顺网站seo建设网站需要支付什么插件费用吗
  • 东台做淘宝网站电子商务是学什么
  • 建一个购物网站多少钱wordpress托管在哪里