该问题,有很多种方法,但是很多方法要么这个有问题,要么那个有问题,最后终于找到一种没问题的方法。记录一下:
参考地址:https://www.jianshu.com/p/d18ff36a78d6?from=singlemessage
Login.py(登录窗口)文件
- import sys
- from PyQt5 import QtCore, QtGui, QtWidgets
- from PyQt5.QtCore import *
- from PyQt5.QtWidgets import QFileDialog, QMessageBox, QDockWidget, QListWidget
- from PyQt5.QtGui import *
-
- from Ui_Login import Ui_Login_Window #由.UI文件生成.py文件后,导入创建的GUI类
-
- from Main import * # Main.py为 主窗口代码文件
-
- from class_MSSQL import MSSQL
- #QtWidgets.QMainWindow:继承该类方法
- class Login_window(QtWidgets.QMainWindow,Ui_Login_Window):
-
- #__init__: 析构函数,也就是类被创建后就会预先加载的项目。
- # 马上运行,这个方法可以用来对你的对象做一些你希望的初始化。
- def __init__(self):
- #这里需要重载一下Login_window,同时也包含了QtWidgets.QMainWindow的预加载项。
- super(Login_window, self).__init__()
- self.setupUi(self)
- # 将点击事件与槽函数进行连接
- self.btn_login.clicked.connect(self.btn_login_fuc)
- #登录按钮 函数
- def btn_login_fuc(self):
- #1 获取输入的账户和密码
- account = self.txt_1.text() # 记得text要打括号()!
- password = self.txt_2.text()
- if account == "" or password == "":
- reply = QMessageBox.warning(self,"警告","账号密码不能为空,请输入!")
- return
-
- #2 查询数据库,判定是否有匹配
- ms = MSSQL()
- result = ms.Login_result(account, password)
- if(len(result) > 0):
- #1打开新窗口
- Ui_Main.show()
- #2关闭本窗口
- self.close()
- else:
- reply = QMessageBox.warning(self,"警告","账户或密码错误,请重新输入!")
- if __name__ == '__main__': #如果这个文件是主程序。
- app = QtWidgets.QApplication(sys.argv) #QApplication相当于main函数,也就是整个程序(很多文件)的主入口函数。对于GUI程序必须至少有一个这样的实例来让程序运行。
- window = Login_window() #生成一个实例(对象)
- Ui_Main = Ui_Main() #生成主窗口的实例
- window.show() #有了实例,就得让它显示。这里的show()是QWidget的方法,用来显示窗口。
- sys.exit(app.exec_()) # 调用sys库的exit退出方法,条件是app.exec_()也就是整个窗口关闭。
Main.py(主窗口)文件
- import sys
- from PyQt5 import QtCore, QtGui, QtWidgets
- from PyQt5.QtCore import *
- from PyQt5.QtWidgets import *
- from PyQt5.QtGui import *
-
- from Ui_Main import Ui_MainWindow #由.UI文件生成.py文件后,导入创建的GUI类
-
- import math
- from PIL import Image, ImageDraw, ImageFont
- import numpy as np
- import os
- import cv2 as cvcv
- from class_Detection import Detection
- class Ui_Main(QtWidgets.QMainWindow,Ui_MainWindow):
-
- def __init__(self):
- super(Ui_Main, self).__init__()
- self.setupUi(self)
- # 将点击事件与槽函数进行连接
- self.btn_video.clicked.connect(self.btn_video_fuc)
- def btn_video_fuc(self):
- filename = QFileDialog.getOpenFileName(self,'open file','./')
- self.timer_camera = QTimer(self)
- self.cap = cvcv.cv2.VideoCapture(filename[0])
- self.timer_camera.timeout.connect(self.show_pic)
- self.timer_camera.start(10) #1毫秒
-
-
- def show_pic(self):
- dc = Detection()
- success,frame = self.cap.read()
-
- if success:
- show = dc.process_image(frame)
- showImage = QImage(show.data, show.shape[1], show.shape[0],QImage.Format_RGB888)
- self.label.setPixmap(QPixmap.fromImage(showImage))
- self.label.setScaledContents(True) #图片自适应
- self.timer_camera.start(10)
- if __name__ == '__main__':
- app = QtWidgets.QApplication(sys.argv)
- window = Ui_Main()
- window.show()
- sys.exit(app.exec_())
