导包:
import sys
from PyQt5.QtWidgets import *
from PyQt5 import QtWidgets, QtCore, QtGui
from first_ui import Ui_MainWindow # 前端UI界面代码
固定写法:
class MyUi(QMainWindow, Ui_MainWindow):
def __init__(self, parent=None):
super().__init__(parent)
self.setupUi(self)
if __name__ == '__main__':
app = QApplication(sys.argv)
ui = MyUi()
ui.show()
sys.exit(app.exec_())
按键点击事件关联对象:
self.pushButton.clicked.connect(self.add)
label显示文本内容:
self.mylabel.setText(str(self.add_time))
按钮关联打开文件:
file_name, _ = QFileDialog.getOpenFileName(self, '请选择图片', '.',
'图像文件(*.jpg *.jpeg *.png)')
# 打开图片,第一个参数为父类,
#2为QFileDialog对话框标题,
#3为“C:\”默认打开的目录,‘.’代表程序运行的目录,‘/’代表当前盘下的根目录,
#4为文件扩展名过滤器
video_name, _ = QFileDialog.getOpenFileName(self, '请选择视频', '.',
'视频文件(*.avi *.mp4 *.wmv)')
加载图片并自定义展示尺寸(缩放为label框大小):
image = QtGui.QPixmap(file_name).scaled(self.imglabel.width(), self.imglabel.height())
在label上显示图片:
self.imglabel.setPixmap(image)
弹出QT警告框:
QtWidgets.QMessageBox.warning(
self, u"Warning", u"打开视频失败",
buttons=QtWidgets.QMessageBox.Ok,
defaultButton=QtWidgets.QMessageBox.Ok
# unicode避免乱码
计时器QtCore.QTimer的用法;
self.timer = QtCore.QTimer() # 初始化定时器
self.timer.start(30) # 每隔30ms触发一次动作
self.timer.timeout.connect(self.open_frame) # 关联动作
def open_frame(self):
ret, image = self.cap.read()
if ret:
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
# 根据image创建pyqt5中的图片.
video_frame = QtGui.QImage(image.data, image.shape[1], image.shape[0],
QtGui.QImage.Format_RGB888)
self.imglabel.setPixmap(QtGui.QPixmap(video_frame))
self.imglabel.setScaledContents(True) # 自适应窗口大小
else:
self.cap.release()
self.timer.stop()