该问题,有很多种方法,但是很多方法要么这个有问题,要么那个有问题,最后终于找到一种没问题的方法。记录一下:

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_())

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐