PYQT5登入介面跳轉主介面方法
阿新 • • 發佈:2018-11-06
該問題,有很多種方法,但是很多方法要麼這個有問題,要麼那個有問題,最後終於找到一種沒問題的方法。記錄一下:
參考地址: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, QListWidgetfrom 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) #登入按鈕 函式 defbtn_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_())