昨天想着用 Python 写个展示的 demo,之前打算熟悉一下 PyQt ,正好边学边做,学以致用。

主要的流程是在 cmd 下运行 .exe 并读取输出结果,运到的困难是如何实时回传数据以及修改图片大小并显示(缩放到固定大小)。

以下是代码,只展示框架,部分参数未设置。基于 Python3 + PyQt5

  1. import os
  2. import time
    import sys
  3. import subprocess
  4. from configparser import ConfigParser
  5. from PyQt5.QtWidgets import *
  6. from PyQt5.QtGui import *
  7. from PyQt5.QtCore import *
  8.  
  9. class Example(QMainWindow):
  10. def __init__(self):
  11. super().__init__()
  12. self.initUI()
  13.  
  14. def initUI(self):
  15. self.command = ""
  16. self.inipath = r""
  17. self.cf = ConfigParser()
  18. self.cf.read(self.inipath)
  19.  
  20. main_ground = QWidget()
  21. self.setCentralWidget(main_ground)
  22.  
  23. grid = QGridLayout()
  24. grid.setSpacing(10)
  25.  
  26. self.title = QLabel('Result',self)
  27. self.titleEdit = QLineEdit(self)
  28. self.label = QLabel("photo",self)
  29.  
  30. self.title.setGeometry(30,30,50,25)
  31. self.title.setFont(QFont('SansSerif', 12))
  32.  
  33. """
  34. grid.addWidget(self.title,1,0)
  35. grid.addWidget(self.titleEdit,1,1)
  36. grid.addWidget(self.label,2,0,5,5)
  37. main_ground.setLayout(grid)
  38. """
  39.  
  40. self.statusBar()
  41. QAction()
  42. QAction.triggered.connect()
  43.  
  44. menubar = self.menuBar()
  45. RunMenu = menubar.addMenu('&Run')
  46. RunMenu.addAction()
  47. EditMenu = menubar.addMenu('&Edit')
  48. EditMenu.addAction()
  49.  
  50. self.setGeometry(300, 300, 740, 480)
  51. self.setWindowTitle('VehicleDetect')
  52. #self.setWindowFlags(Qt.WindowMinimizeButtonHint) #禁止调整窗口大小
  53. self.setFixedSize(self.width(), self.height())
  54. self.show()
  55.  
  56. def Action(self):
  57. self.cf.set()
  58. self.cf.write(open(self.inipath,'w'))
  59. self.showDialog()
  60. if self.fname[0]:
  61. self.command = ''
  62. subprocess.call(self.command)
  63. print("\n",end = "")
  64. return
  65.  
  66. def showDialog(self):
  67. self.fname = QFileDialog.getOpenFileName(self, 'Open file', r'D:\')
  68. return
  69.  
  70. def update_item_data(self,data):
  71. self.titleEdit.setText(data)
  72. ResultPath = r''
  73. imglist = os.listdir(ResultPath)
  74. if int(data):
  75. imgshow = os.path.join(ResultPath,imglist[-1])
  76. image = QImage()
  77. image.load(imgshow)
  78. #self.label.setPixmap(QPixmap(imgshow))
  79. self.label.setPixmap(QPixmap.fromImage(image).scaled(self.label.size(), Qt.KeepAspectRatio, Qt.SmoothTransformation));
  80.  
  81. class UpdateData(QThread):
  82. data = pyqtSignal(str)
  83. cnt = 0
  84. def run(self):
  85. while(True):
  86. cnt = len(os.listdir(r''))
  87. self.data.emit(str(cnt))
  88. time.sleep(1)
  89.  
  90. if __name__ == '__main__':
  91. app = QApplication(sys.argv)
  92. ex = Example()
  93.  
  94. update_thread = UpdateData()
  95. update_thread.data.connect(ex.update_item_data)
  96. update_thread.start()
  97.  
  98. sys.exit(app.exec_())

  

[python] 初识 PyQt5的更多相关文章

  1. python初识(二)

    目录: 进制 基本数据类型 整形 布尔值 字符串 列表 元祖 字典 集合 range & enumerate 一.进制 二进制转换十进制计算: 十进制:==47 一个字节公式:==128 64 ...

  2. 小学生绞尽脑汁也学不会的python(初识面对对象)

    小学生绞尽脑汁也学不会的python(初识面对对象) 一. 面向对象思想 1. 面向过程. 重点在"过程". 按照实物的发展流程. 先干嘛,后干嘛, 最后干嘛.... 优点: 简单 ...

  3. Python 入门【一】Python 初识及学习资料

    Python 初识及学习路线: CodeCademy Python 在线教学: 廖雪峰 Python 2.7 教程: 廖雪峰 Python 3.0 教程: Python 官方文档(2.7~3.7:英文 ...

  4. Python初识类与对象

    Python初识类与对象 类与对象 世界观角度分析类与对象 类是一个抽象的概念,而对象是一个实体的存在,对象由类创造而出,每个对象之间互相独立互不影响,一个对象可以同时拥有多个类的方法,实例化就是通过 ...

  5. Python初识函数

    Python初识函数 函数理论篇 什么是函数 在编程语言中的函数不同于数学中的函数.不管是数学上的函数还是编程语言中的函数都是为了完成特定的某一功能而诞生的,他们的区别在于: 1.数学中的函数当输入的 ...

  6. Python初识与简介【开篇】

    目录 1.扯淡 2.Python历史 3.Python简介 4.Python应用 5.为什么是python而不是其他语言? 6.Python的种类 7.Python的特点 8.Python设计哲学 9 ...

  7. Python初识文本基本操作

    初识文本的基本操作 怎么在文件里面写内容和都内容 文件操作过程 1,找到文件 文件路径 2,打开文件 file_obj=file(文件路径,模式) 3,文件操作,读写文件 file_obj.read( ...

  8. python初识-day2

    1.模块初识 python中的库包括标准库和第三方库,需要使用时可直接导入,导入格式为"import  库模块",例如: import sys #sys为python的标准库 pr ...

  9. python - 初识面向对象

    1.初识面向对象       面向过程:一切以事务的发展流程为中心           优点:负责的问题流程化,编写相对简单         缺点:可扩展性差,只能解决一个问题,改造也会很困难,牵一发 ...

随机推荐

  1. Django-视图函数/模板渲染/过滤器

    一.Django的视图函数 一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应. 响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个 ...

  2. JAVA NIO缓冲区(Buffer)------ByteBuffer常用方法

    参考:https://blog.csdn.net/xialong_927/article/details/81044759 缓冲区(Buffer)就是在内存中预留指定大小的存储空间用来对输入/输出(I ...

  3. Mac 下python3 [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed 解决方法

    原文:http://blog.yuccn.net/archives/625.html python3.6下使用urllib 的request进行url 请求时候,如果请求的是https,请求可以会出现 ...

  4. swoole入门简介

    原文:https://www.cnblogs.com/dormscript/p/4811921.html 本文主要记录一下学习swoole的过程.填过的坑以及swoole究竟有多么强大! 首先说一下对 ...

  5. iSCSI存储技术

    iSCSI(Internet Small Computer System Interface),Internet小型计算机系统接口,又称为IP-SAN,是一种基于因特网及SCSI-3协议下的存储技术, ...

  6. [Java]给指定时间加上十秒

    package com.testEmp; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util. ...

  7. Android网络编程之——文件断点下载

    一:关于断点下载所涉及到的知识点 1.对SQLite的增删改查(主要用来保存当前任务的一些信息) 2.HttpURLConnection的请求配置 HttpURLConnection connecti ...

  8. easyUI之numberspinner数字微调框

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <hea ...

  9. Callable和Supplier的区别

    A Callable is "A task that returns a result, while a Supplier is "a supplier of results&qu ...

  10. ASP.NET的IIS映射

    ASP.NET默认扩展名为.aspx,可是我们看到许多网站的扩展名很特别,比如校内的do.个性之余还可以实现简单的伪静态(即把后缀改为html) 不过相对URLRewriter来说,是有点简陋(只能改 ...