該問題,有很多種方法,但是很多方法要么這個有問題,要么那個有問題,最后終於找到一種沒問題的方法。記錄一下:
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_())
