---作者吴疆,未经允许,严禁转载,违权必究---

---欢迎指正,需要源码和文件可站内私信联系---

-----------点击此处链接至博客园原文-----------

功能说明:PyQt界面程序,触发播放按钮实现显示图片、一窗体一屏一放视频、一窗体多屏多放视频功能

运行环境:Windows7、Python3、PyQt5、Pycharm5.0

一、环境搭建

参考链接:PyQt5环境搭建PyQt工具栏菜单汉化

1.PyQt5和PyQt5-tools安装(注:PyQt5与PyQt4存在一定区别)

pip安装命令为 pip install PyQt5和pip install PyQt5-tools

2.Pycharm中Qt Designer(用于绘画界面)和PyUIC(将界面ui文件转化为py文件供继承)配置

Pycharm中菜单栏依此点击File----Settings----Tools----External Tools-----点击“+”号,按下图分别添加Qt Designer、PyUIC

Program参数为“designer.exe”的全路径,Working directory:$ProjectFileDir$

Program参数为“python.exe”的全路径,Arguments:-m PyQt5.uic.pyuic  $FileName$ -o $FileNameWithoutExtension$.py

3.Qt Designer工具栏菜单汉化(英语大神可跳过此步)

下载designer_zh_CN.qm将它放在你的...\Lib\site-packages\pyqt5-tools\translations文件夹中,重新打开QT就汉化成功了

designer_zh_CN.qm的下载地址为:https://pan.baidu.com/s/1jzkumqjw-3VQiJxvo4V6Xw

二、实例上手----实现显示图片

参考链接:计算售价界面程序(只学习其中如何绘制ui界面)、PyQt 用label控件显示图片基于Qt Designer和PyUIC开发PyQt程序的步骤

----------------上述3个博客建议看下,可以有个初步了解,也可跳过----------------------

1.使用Qt Designer设计界面

Pycharm中顶部菜单栏依此点击Tools ----External Tools----Qt Designer,如下图所示,选择创建Main Window(主窗体),可在“屏幕大小”选项选择适当大小,此时若不选择可以后续再更改相关属性

注:作为我们初学者,先别管main windows、Widget、Dialog的区别(之间存在继承关系、功能略有差异)

就像做ppt一样开始绘制界面ui,左侧为控件箱,中间为绘制窗口面板,右侧可更改窗口、控件相关属性

本节涉及的控件主要包括label、Push Button等,只需在控件箱将相应控件拖入面板

以label控件为例,拖入面板,点击label控件,在右侧一列属性栏内编辑其属性,一般需要改objectName(通过pythpn代码调用这个控件的变量名,尽量取有意义的名字)、text(显示文字)、宽度、高度等属性

pushbotton控件同样照此操作,得到的简易界面如下图所示

保存当前窗体(如:起名为test.ui),将自动生成xx.ui文件(实际上是一个xml文件,可用任何文本编辑器打开),此时,对该文件右键 External Tools ----PyUIC ,“xx.ui”文件在同目录下被转为“xx.py”文件以便继承,转换为“xx.py”的原因是IDE能自动识别对象和函数。然后在当前目录下新建一个.py文件(如下图中show_single_channel.py)。

在该py文件中添加如下头文件

创建一个类MyApp,继承Ui_MainWindow类,类内添加初始化方法

类内添加槽函数及槽函数需调用的函数等,当点击pushButton将触发槽函数相应事件

添加主函数

实现效果:点击播放按钮,屏幕显示该图片

三、实例上手----实现一窗体一屏一放

参考链接:BGR图像转换为QImage对象QPixmap详解    (以上博客建议阅读)

项目名:qt_show_single(百度云盘备份不对外提供)

实现效果:点击播放按钮,屏幕实时播放视频

与实例二代码逻辑上无本质上区别,主要修改槽函数即可,修改说明可见如下截图注释

仅提供代码截图(show_single_channel.py):

四、实例上手----实现一窗体多屏多放

项目名:qt_show_double(百度云盘备份不对外提供)

实现效果:分别点击播放1、播放2,屏幕实时播放对应视频。

代码说明:按上述操作单屏能实现的话,多屏是一样的道理,主要问题在于代码如何写的更精简,由于项目要求,在此不提供参考代码。

五、常见报错

1.native Qt signal is not callable

将信号与槽函数未关联,此处若缺少connect会导致该错误发生。

2.环境的错误:如PyQt4与PyQt5环境不同导致的,具体可百度解决。

利用PyQt GUI显示图片、实时播放视频的更多相关文章

  1. 利用matplot简单显示图片

    import matplotlib.pyplot as plt from matplotlib.image import imread img = imread('F:\\ml\\DL\\source ...

  2. ckplayer插件播放视频

    官网:超酷网页视频 本篇介绍:插件播放视频,  添加插件(额外的功能),  视频格式之间的转换 PC端一般都是利用插件(Flash)来播放视频,可以支持很多格式.网上很多说这个插件的,这里只是做个记录 ...

  3. video播放视频以及相关事件

    <!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="Conten ...

  4. [Unity3D][Vuforia][IOS]vuforia在unity3d中添加自己的动态模型,识别自己的图片,添加GUI,播放视频

    使用环境 unity3D 5 pro vuforia 4 ios 8.1(6.1) xcode 6.1(6.2) 1.新建unity3d工程,添加vuforia 4.0的工程包 Hierarchy中 ...

  5. Unity3D基础学习 利用NGUI的Texture播放视频

    利用NGUI播放视频,首先你得导入你的视频 你的电脑中必须安装QuickTime软件,没有,去下一个,如果是Windows系统,安装完之后重启. 接下来转换你的视频格式,如果你的视频在QuickTim ...

  6. 使用canvas来实时播放RTSP视频

    HTML5的标签可以用使用下来面的方式来播放静态视频 <video width="320" height="240" controls="con ...

  7. 前端Web浏览器基于Flash如何实时播放监控视频画面(四)之使用videoJs‘拉流’

    本片文章只是起到抛砖引玉的作用,能从头到尾走通就行,并不做深入研究.为了让文章通俗易懂,尽量使用白话描述. 0x001: 下载videoJs 对于Video.js 5.x及更低版本,Flash技术(v ...

  8. 如何利用CSS代码使图片和文字在同一行显示且对齐

    对于初学css的新手朋友来说,经常会遇到这样一个问题,当文字和图片出现在同一行或者同一个div里面的时候,在浏览器中运行出来的显示效果往往是在不同的行,那么,我们怎么才能利用CSS代码使图片和文字在同 ...

  9. iOS使用ffmpeg播放rstp实时监控视频数据流

    一.编译针对iOS平台的ffmpeg库(kxmovie) 最近有一个项目.须要播放各种格式的音频.视频以及网络摄像头实时监控的视频流数据,经过多种折腾之后,最后选择了kxmovie,kxmovie项目 ...

随机推荐

  1. linux日常管理-系统服务

    开机不启动不必要系统服务,节省硬件资源,解决安全隐患 调整服务有两种办法 没有这个命令就安装一下.执行这个命令,出现下面界面 按空格键选择或取消,tab切换选择确定或取消 系统服务留下 crond i ...

  2. 关于android的一些博文收集

    Java网络编程总结 http://www.cnblogs.com/oubo/archive/2012/01/16/2394641.html Android应用系列:双击返回键退出程序 http:// ...

  3. 第四课4、ROS客户端

    ROS客户端提供一些列库文件用于用户开发.它利用许多ROS概念并使它通过代码可以获取. 下面是ROS程序中的接口 ROSCPP客户端(c++客户端) 首先新建一个包 然后catkin_make一下 在 ...

  4. SCSS 中的 &::before 和 &::after

    在看一个文件的时候,发现有&::before 和 &::after, 没有理解怎么用的,因为以前在项目的css文件中,从来没有使用过,也没有见过 网上查询了一下,才发现&::b ...

  5. SQL中的union,except,intersect用法

    限制:所有查询中的列数和列的数序必须相同 union all:完全整合两个结果集查出所有数据 union:查出两个表的数据并且去除重复的数据 except:去重之后只会保留第一个表中的数据,查询a表在 ...

  6. JAVA包学习笔记

    包 什么是包 为了使类易于查找和使用,为了避免命名冲突和限定类的访问权限,可以将一组相关类与接口"包裹"在一起形成包. 有可能同名类的存在而导致命名冲突,而位于不同包中的类及时同名 ...

  7. Unable to round-trip http request to upstream: EOF问题

    Unable to round-trip http request to upstream: EOF, 今天我用的phpstudy环境中的网站页面忽然打不开了,报错“Unable to round-t ...

  8. 依托http-headers的 sql注入和时间盲注

    机缘巧合接触了一点关于sql注入的网络安全问题 依托 headers 的 sql 注入 一般来说大家都很清楚用户输入的危险性,通常会对用户表单提交的数据进行过滤(引号转码). 但是如果写过网络爬虫,那 ...

  9. ASP.NET控件之RangeValidator控件

    作用:对Textbox或者输入框进行范围验证: 属性:ControlToValidate:要验证的控件: ErrorMessage:错误提示信息: MaxiMumValue:最大值: MinimumV ...

  10. 洛谷P2294 [HNOI2005]狡猾的商人

    P2294 [HNOI2005]狡猾的商人 题目描述 输入输出格式 输入格式: 从文件input.txt中读入数据,文件第一行为一个正整数w,其中w < 100,表示有w组数据,即w个账本,需要 ...