详细设计追函数报告生成

界面大致如下:

部分UI代码:

  1. #!/usr/bin/env python3.7
  2. # -*- coding:utf-8 -*-
  3. # Author: Lancer 2019-09-19 19:52:40
  4.  
  5. import os,sys,re,psutil,copy
  6. from PyQt5 import QtCore, QtGui, QtWidgets
  7. from PyQt5.QtWidgets import *
  8. from count_testcase import *
  9. from create_testfile import *
  10.  
  11. __Version__ = "V0.0.1"
  12. __Author__ = "Lancer"
  13. __Modifytime__ = ""
  14.  
  15. class MainWidows(QMainWindow):
  16. def __init__(self, parent=None):
  17. super(MainWidows,self).__init__(parent)
  18. self.desktop = QApplication.desktop()
  19. self.screenRect = self.desktop.screenGeometry()
  20. self.height = self.screenRect.height()
  21. self.width = self.screenRect.width()
  22. self.resize(1000,800)
  23. self.setWindowTitle("Tools")
  24. # 整体布局
  25. self.basewidget = QFrame(self)
  26. self.workspace_layout = QVBoxLayout()
  27. self.workspace_frame = QFrame(self.basewidget)
  28. #self.workspace_frame.setStyleSheet("QFrame{border: 1px solid #000000}")
  29. self.show_choice = QGroupBox()
  30. self.show_choice.setTitle("界面切换")
  31. self.theme_choice = QGroupBox()
  32. self.theme_choice.setTitle("主题切换")
  33. self.tools_choice = QGroupBox()
  34. self.tools_choice.setTitle("工具栏")
  35. self.workspace_layout.addWidget(self.show_choice)
  36. self.workspace_layout.addWidget(self.theme_choice)
  37. self.workspace_layout.addWidget(self.tools_choice)
  38. self.show_layout = QVBoxLayout()
  39. self.totestcase_btn = QPushButton("测试文件生成")
  40. self.tocase_count_btn = QPushButton("测试案例统计")
  41. self.show_layout.addWidget(self.totestcase_btn)
  42. self.show_layout.addWidget(self.tocase_count_btn)
  43. self.show_layout.addStretch(1) #弹簧 空白填充的感觉
  44. self.show_choice.setLayout(self.show_layout)
  45. self.black_css = QPushButton("炫酷黑")
  46. self.blue_css = QPushButton("天空蓝")
  47. self.css_layout = QVBoxLayout()
  48. self.css_layout.addWidget(self.black_css)
  49. self.css_layout.addWidget(self.blue_css)
  50. self.css_layout.addStretch(1)
  51. self.theme_choice.setLayout(self.css_layout)
  52. self.about_btn = QPushButton("关于")
  53. self.help_btn = QPushButton("工具使用介绍")
  54. self.other_layout = QVBoxLayout()
  55. self.other_layout.addStretch(1)
  56. self.other_layout.addWidget(self.about_btn)
  57. self.other_layout.addWidget(self.help_btn)
  58. self.tools_choice.setLayout(self.other_layout)
  59. #添加工作面板
  60. self.stackedWidget = QStackedWidget()
  61. self.createcasewidget = CreateTestFile(self.basewidget)
  62. self.countcasewidget = CountTestCase(self.basewidget)
  63. self.stackedWidget.addWidget(self.createcasewidget)
  64. self.stackedWidget.addWidget(self.countcasewidget)
  65.  
  66. self.workspace_frame.setLayout(self.workspace_layout)
  67. self.main_layout = QHBoxLayout()
  68. self.main_layout.addWidget(self.stackedWidget)
  69. self.main_layout.addWidget(self.workspace_frame)
  70. self.main_layout.setStretchFactor(self.workspace_frame, 1) #设置布局比例
  71. self.main_layout.setStretchFactor(self.stackedWidget, 9 )
  72. self.basewidget.setLayout(self.main_layout)
  73. self.setCentralWidget(self.basewidget)
  74. #状态栏
  75. self.datetime = QtCore.QDateTime.currentDateTime()
  76. self.statusbar = self.statusBar().showMessage(self.datetime.toString(QtCore.Qt.DefaultLocaleLongDate))
  77. #定时器
  78. self.timer = QtCore.QTimer(self) #初始化一个定时器
  79. self.timer.timeout.connect(self.app_loop)
  80. self.timer.start(1000) #设置计时间隔并启动
  81.  
  82. #信号槽
  83. self.totestcase_btn.clicked.connect(self.set_workwidget_01)
  84. self.tocase_count_btn.clicked.connect(self.set_workwidget_02)
  85. self.about_btn.clicked.connect(self.about_tools)
  86. self.help_btn.clicked.connect(self.help_ui)
  87. self.stackedWidget.setCurrentIndex(1)
  88.  
  89. def set_workwidget_01(self):
  90. self.stackedWidget.setCurrentIndex(0)
  91. def set_workwidget_02(self):
  92. self.stackedWidget.setCurrentIndex(1)
  93.  
  94. def about_tools(self):
  95. QMessageBox.about(self,"关于","版本号:%s \n作者:%s \n发布时间:%s \n"%(__Version__,__Author__ , __Modifytime__ ))
  96.  
  97. def help_ui(self):
  98. help_str = """\
  99. A 生成测试文件: 输入函数名 可以选则测试案例个数 点击生成按钮 会生成固定格式 test_函数名.cpp \n
  100. B 测试案例统计:
  101. 步骤 1. 点击按钮【测试报告文档选择】选择模块parasoft报告(.pdf)
  102. 2. 点击按钮【查询具体函数按钮个】可以显示每个函数的测试案例统计个数
  103. 3. 点击按钮【详细设计单元测试追溯表生成】 可以生成详细设计单元测试追溯表 (Excel)
  104. """
  105. QMessageBox.about(self,"帮助信息","帮助信息:\n%s "%(help_str))
  106.  
  107. def app_loop(self):
  108. self.datetime = QtCore.QDateTime.currentDateTime()
  109. self.statusbar = self.statusBar().showMessage(self.datetime.toString(QtCore.Qt.DefaultLocaleLongDate))
  110.  
  111. if __name__ == "__main__":
  112. app = QApplication(sys.argv)
  113. demo = MainWidows()
  114. demo.show()
  115. sys.exit(app.exec_())

加了CSS效果:

效果2:

pyqt5学习的更多相关文章

  1. PyQt5学习笔记-从主窗体打开一个子窗体

    PyQt5学习笔记-从主窗体打开一个子窗体 软件环境: Eric6+Python3.5+PyQt5 试验目标: 1.点击菜单项Open,打开一个子窗体 2.点击按钮Open,打开一个子窗体 主窗体设计 ...

  2. Pyqt5学习笔记(一)

    Python已有的GUI框架: Tkinter(python内嵌的GUI环境,使用TCL实现,易学易用,方便简单创GUI自带无需安装,适用于Unix.Windows和Mac系统组,在Tk8.0的后续版 ...

  3. Pyqt5学习系列

    最近在学习Pyqt5做界面,找到了一个非常棒的博主的学习系列 在此记录下来: http://blog.csdn.net/zhulove86/article/category/6381941

  4. PyQt5学习笔记----标准文件打开保存框QFileDialog

    单个文件打开 QFileDialog.getOpenFileName()多个文件打开 QFileDialog.getOpenFileNames() 文件夹选取     QFileDialog.getE ...

  5. PYQT5学习笔记之各模块介绍

    Qtwidgets模块包含创造经典桌面风格的用户界面提供了一套UI元素的类 Qtwidegts下还有以下常用对象,所以一般使用Qtwidegts时会使用面向对象式编程 QApplication: ap ...

  6. PyQt5学习笔记14----初识pyqt多线程操作

    转载:翻滚吧挨踢男 首先来看一个例子: # coding=utf-8 __author__ = 'a359680405' from PyQt5.QtCore import * from PyQt5.Q ...

  7. Python pyQt4/PyQt5 学习笔记4(事件和信号)

    信号 & 槽 import sys from PyQt5.QtCore import Qt from PyQt5.QtWidgets import (QWidget,QLCDNumber,QS ...

  8. Python pyQt4/PyQt5 学习笔记3(绝对对位,盒布局,网格布局)

    本节研究布局管理的内容. (一)绝对对位  import sys from PyQt4 import QtGui class Example(QtGui.QWidget): def __init__( ...

  9. Python pyQt4/pyQt5 学习笔记2(状态栏、菜单栏和工具栏)

    例子:状态栏.菜单栏和工具栏 import sys from PyQt4 import QtGui class Example(QtGui.QMainWindow): def __init__(sel ...

  10. Python pyQt4/pyQt5 学习笔记1(空白窗口,按钮,控件事件,控件提示,窗体显示到屏幕中间,messagebox)

    PyQt4是用来编写有图形界面程序(GUI applications)的一个工具包.PyQt4作为一个Python模块来使用,它有440个类和超过6000种函数和方法.同时它也是一个可以在几乎所有主流 ...

随机推荐

  1. 后端返回null,前端怎么处理?数据容错——不用过分相信外部数据

    场景 我们在开发过程当中,总是会遇到因为数据原因,导致使用数组方法或者获取对象属性的时候报错. xxx is not fuction Cannot read property xxxx of unde ...

  2. hadoop mapreduce求解有序TopN

    利用hadoop的map和reduce排序特性实现对数据排序取TopN条数据. 代码参考:https://github.com/asker124143222/wordcount 1.样本数据,假设是订 ...

  3. [b0007] windows 下 eclipse 开发 hdfs程序样例

    目的: 学习使用hdfs 的java命令操作 相关: 进化: [b0010] windows 下 eclipse 开发 hdfs程序样例 (二) [b0011] windows 下 eclipse 开 ...

  4. MySQL 部署分布式架构 MyCAT (二)

    安装 MyCAT 安装 java 环境(db1) yum install -y java 下载 Mycat-server-1.6.5-release-20180122220033-linux.tar. ...

  5. 查找树ADT--二叉查找树

    二叉树的一个重要应用是它们在查找中的使用. 二叉查找树的性质:对于树中的每个节点X,它的左子树中所有项的值小于X中的项,而它的右子树中所有项的值大于X中的项.这意味着该树所有的元素可以用某种一致的方式 ...

  6. Python推导表达式、迭代器、生成器、模块和包

    推导表达式 yield用法 模块的概念和导入方法 包和包管理 推导表达式(利用for,一个一个地放入数据) 列表推导 集合推导 字典推导 迭代器 迭代 for 迭代变量 in 可迭代对象 每一次循环都 ...

  7. hbase相关操作

    hbase安装 下载 wget http://apache.gree.com/apache/hbase/hbase-1.2.11/hbase-1.2.11-bin.tar.gz tar -zxvf b ...

  8. 利用开源软件自建WAF系统--OpenResty+unixhot

    目录 介绍 安装Openresty 修改nginx.conf 部署WAF 测试WAF 简介:利用OpenResty+unixhot自建WAF系统 介绍   OpenResty是一个基于 Nginx 与 ...

  9. 并发编程学习笔记(七、Thread源码分析)

    目录: 常见属性 构造函数 start() run() 常见属性: /** * 线程名称 */ private volatile String name; /** * 线程优先级 */ private ...

  10. 非阻塞式I/O

    套接字的默认状态是阻塞的.这就意味着当发出一个不能立即完成的套接字调用时,其进程将被投入睡眠,等待相应的操作完成.可能阻塞的套接字调用可分为以下4类 (1)输入操作,包括read,readv,recv ...