我有一个QMainWindow。“它有一个菜单FaceCapture->;更新”。它在init处有以下信号
self.mdiArea.subWindowActivated.connect(self.updateMenus)
单击更新菜单,打开mdi QDialog。表单有QtableWidget和“Search”按钮。它在init处有以下信号
self.employeeTableWidget.itemActivated.connect(self.employeeTableWidgetClicked)
单击“搜索”按钮,表中填充了几行
当我点击表格的任何一行时,mdiArea.SubWindow已激活被解雇而不是employeeTableWidget.itemActivated已激活. 你知道吗
这是代码2.py文件。跑人脸识别.py你知道吗
你知道吗人脸识别.py你知道吗
import sys
import sqlite3
import PyQt5
from PyQt5 import QtGui, QtWidgets, QtCore
from PyQt5.QtCore import pyqtSlot
from PyQt5.QtWidgets import QDialog, QApplication, QMainWindow
import cv2
import os
from PIL import Image
from PIL.ImageQt import ImageQt
import numpy as np
import pandas as pd
from PyQt5.uic import loadUi
from EmployeeAdd import photo,faceAdd
from EmployeeUpdate import photo,faceUpdate
from PyQt5.QtCore import (QFile, QFileInfo, QPoint, QSettings, QSignalMapper,
QSize, QTextStream, Qt)
from PyQt5.QtGui import QIcon, QKeySequence
from PyQt5.QtWidgets import (QAction, QApplication, QFileDialog, QMainWindow,
QMdiArea, QMessageBox, QTextEdit, QWidget)
class faceRecognition(QMainWindow):
def __init__(self, parent=None):
super(faceRecognition, self).__init__(parent)
#self.statusBar = ""
self.path = ""
self.readPath = ""
#self.stackedImage = np.zeros([1, 1, 3], np.uint8)
#self.img = []
#xx = Ui_MainWindow()
#print("hh",xx.mdiArea)
loadUi('faceRecognition.ui', self)
self.faceAddChild = None
self.faceUpdateChild = None
self.showMaximized()
self.mdiArea = QMdiArea()
self.mdiArea.setHorizontalScrollBarPolicy(Qt.ScrollBarAsNeeded)
self.mdiArea.setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded)
self.setCentralWidget(self.mdiArea)
self.mdiArea.subWindowActivated.connect(self.updateMenus)
self.windowMapper = QSignalMapper(self)
self.windowMapper.mapped[QWidget].connect(self.setActiveSubWindow)
self.buildActions()
self.setWindowTitle("Face Recognition")
self.setWindowIcon(QtGui.QIcon('rensol-logo.png'))
self.updateMenus()
#self.windowMenu.aboutToShow.connect(self.updateWindowMenu)
def addFaceTrg(self):
try:
if self.faceAddChild:
print("i am in addfacetrg")
#self.raise_()
#self.faceUpdateChild.activateWindow()
#self.mdiArea.setActiveSubWindow(self.mdiArea.activeSubWindow())
self.faceAddChild.show()
self.faceAddChild.showMaximized()
return 0
print("addFaceTrg")
activeChild = self.mdiArea.activeSubWindow()
#if activeChild:
# print("active sub", type(activeChild), type("Employee Update"), type(activeChild.windowTitle()))
# if activeChild.windowTitle() == "Employee Add" or "Employee Update":
# print("i am dialog",activeChild.windowTitle )
# return 0
self.faceAddChild = faceAdd()
self.mdiArea.addSubWindow(self.faceAddChild)
self.faceAddChild.show()
self.faceAddChild.showMaximized()
#self.updateWindowMenu()
print("i am exiting addface")
except Exception as exp:
print("addFaceTrg",str(exp))
def updateFaceTrg(self):
try:
if self.faceUpdateChild:
print("i am in jjjjj")
#self.raise_()
#self.faceUpdateChild.activateWindow()
#self.mdiArea.setActiveSubWindow(self.mdiArea.activeSubWindow())
self.faceUpdateChild.show()
self.faceUpdateChild.showMaximized()
return 0
print("updateFaceTrg")
activeChild = self.mdiArea.activeSubWindow()
#if activeChild:
# print("active sub", type(activeChild), type("Employee Update"), type(activeChild.windowTitle()))
# if activeChild.windowTitle() == "Employee Update":
# print("i am dialog",activeChild.windowTitle )
# return 0
self.faceUpdateChild = faceUpdate()
self.mdiArea.addSubWindow(self.faceUpdateChild)
self.faceUpdateChild.show()
self.faceUpdateChild.showMaximized()
#self.updateWindowMenu()
print("i am exiting update face")
except Exception as exp:
print("updateFaceTrg",str(exp))
def updateMenus(self):
try:
print("i am in updatemenus")
hasMdiChild = (self.activeMdiChild() is not None)
print("has mdi child", hasMdiChild)
#self.saveAct.setEnabled(hasMdiChild)
#self.saveAsAct.setEnabled(hasMdiChild)
#self.pasteAct.setEnabled(hasMdiChild)
self.closeAct.setEnabled(hasMdiChild)
self.closeAllAct.setEnabled(hasMdiChild)
#self.tileAct.setEnabled(hasMdiChild)
#self.cascadeAct.setEnabled(hasMdiChild)
#self.nextAct.setEnabled(hasMdiChild)
#self.previousAct.setEnabled(hasMdiChild)
#self.separatorAct.setVisible(hasMdiChild)
#hasSelection = (self.activeMdiChild() is not None and
# self.activeMdiChild().textCursor().hasSelection())
#self.cutAct.setEnabled(hasSelection)
#self.copyAct.setEnabled(hasSelection)
except Exception as exp:
print("updateMenus",str(exp))
def updateWindowMenu(self):
try:
self.windowMenu.clear()
self.windowMenu.addAction(self.closeAct)
self.windowMenu.addAction(self.closeAllAct)
self.windowMenu.addSeparator()
#self.windowMenu.addAction(self.tileAct)
#self.windowMenu.addAction(self.cascadeAct)
#self.windowMenu.addSeparator()
#self.windowMenu.addAction(self.nextAct)
#self.windowMenu.addAction(self.previousAct)
#self.windowMenu.addAction(self.separatorAct)
print("i am in update window menus")
windows = self.mdiArea.subWindowList()
#self.separatorAct.setVisible(len(windows) != 0)
for i, window in enumerate(windows):
print("i am in enu win",i)
child = window.widget()
text = "%d %s" % (i + 1, window.windowTitle())
if i < 9:
text = '&' + text
print(text)
action = self.windowMenu.addAction(text)
action.setCheckable(True)
action.setChecked(child is self.activeMdiChild())
action.triggered.connect(self.windowMapper.map)
self.windowMapper.setMapping(action, window)
except Exception as exp:
print("updateWindowMenu",str(exp))
def buildActions(self):
self.addFaceAct.triggered.connect(self.addFaceTrg)
self.updateFaceAct.triggered.connect(self.updateFaceTrg)
self.windowMenu.aboutToShow.connect(self.updateWindowMenu)
self.closeAllAct.triggered.connect(self.closeAllTrg)
self.closeAct.triggered.connect(self.closeTrg)
#self.separatorAct = QAction(self)
#self.separatorAct.setSeparator(True)
#self.openAct = QAction(QIcon(':/images/open.png'), "&Open...", self,
# shortcut=QKeySequence.Open, statusTip="Open an existing file",
# triggered=self.open)
def closeAllTrg(self):
self.mdiArea.closeAllSubWindows()
self.resetActionVariables()
def closeTrg(self):
#activeChild = self.mdiArea.activeSubWindow()
#print("active sub", type(activeChild), type("Employee Update"), type(activeChild.windowTitle()))
self.mdiArea.closeActiveSubWindow()
self.resetActionVariables()
def resetActionVariables(self):
self.faceAddChild = None
self.faceUpdateChild = None
def activeMdiChild(self):
activeSubWindow = self.mdiArea.activeSubWindow()
if activeSubWindow:
return activeSubWindow.widget()
return None
def setActiveSubWindow(self, window):
if window:
self.mdiArea.setActiveSubWindow(window)
def main():
app = PyQt5.QtWidgets.QApplication(sys.argv)
window = faceRecognition()
window.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
你知道吗员工更新.py你知道吗
import sqlite3
import sys
import os
import gc
import PyQt5
import numpy as np
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import pyqtSlot, Qt
from PyQt5.QtWidgets import QDialog, QTableWidget, QTableWidgetItem, QMainWindow, QApplication, QWidget, QAction, \
QVBoxLayout, QPushButton, QMainWindow
from PyQt5.uic import loadUi
from EmployeeAdd import photo
class faceUpdate(QDialog):
def __init__(self, parent=None):
super(faceUpdate, self).__init__(parent)
self.path = ""
self.readPath = ""
self.stackedImage = np.zeros([1, 1, 3], np.uint8)
self.img = []
loadUi('EmployeeUpdate.ui', self)
#self.statusBar = QtWidgets.QStatusBar()
#self.setWindowTitle("Employee Update")
#self.setWindowIcon(QtGui.QIcon('rensol-logo.png'))
self.searchButton.clicked.connect(self.searchButtonClicked)
self.employeeTableWidget.itemClicked.connect(self.employeeTableWidgetClicked)
# self.employeeTableWidget.setEditTriggers(QtGui.QAbstractItemView.NoEditTriggers)
self.connection = sqlite3.connect("FaceRecognition.db")
self.connectionCursor = self.connection.cursor()
#self.showButtonInGrid()
@pyqtSlot()
def showButtonInGrid(self):
btn = QPushButton(self.employeeTableWidget)
btn.setText('Del')
btn2 = QPushButton(self.employeeTableWidget)
rowNo = self.employeeTableWidget.rowCount
#for i in range(self.employeeTableWidget.rowCount()):
print("i am in showButtonInGrid")
self.employeeTableWidget.setCellWidget(1, 10, btn)
self.employeeTableWidget.setCellWidget(2, 10, btn2)
def employeeTableWidgetClicked(self):
try:
print("hellogggggg")
#self.statusBar().showMessage("jjj")
item = self.employeeTableWidget.selectedItems()
rowNo = item[0].row()
print("row no is", rowNo)
identifier = item[0].text()
# xx = self.employeeTableWidget.cellWidget(rowNo,0)
identifier = self.employeeTableWidget.item(rowNo, 0).text()
# print((xx.currentText))
self.path = os.path.dirname(os.path.abspath(__file__))
os.chdir(self.path)
self.readPath = "./Images/" + identifier + "/"
#print(self.employeeTableWidget.selectionModel().selectedIndexes())
if item[0].column() == 10:
print("kk")
if item[0].column() <= 9:
#print(" i am before imageLabel.clear")
#self.imageLabel.clear()
#print(" i am after imageLabel.clear")
print("read path", self.readPath)
photoObj = photo(self.readPath)
if not photoObj.attachImage(self.imageLabel):
self.statusBar().showMessage("")
os.remove(self.readPath + "a.jpg")
del photoObj
gc.collect()
except Exception as exp:
print(str(exp))
self.ErrorBar.setText(str(exp))
def searchButtonClicked(self):
searchFields = [self.idText.text(), self.firstNameText.text(), self.lastNameText.text()]
print(searchFields)
result = self.getEmployees(searchFields)
self.displayEmployeeTableWidget(result)
def getEmployees(self,searchFields):
try:
#query = """select * from employee where Id = ? or FirstName = ? or LastName = ?""", str(searchFields[0]), str(searchFields[1]), str(searchFields[2])
#print(query)
result = self.connectionCursor.execute("""select * from employee where Id = ? or FirstName = ? or LastName = ? """, \
(str(searchFields[0]), str(searchFields[1]), str(searchFields[2])))
##query = "select * from employee"
##result = self.connection.execute(query)
#data = result.fetchall()
#print(len(data))
print("i am in get employee")
#print(result.rowcount)
return result
except Exception as exp:
print(str(exp))
self.ErrorBar.setText(str(exp))
return 0
def displayEmployeeTableWidget(self, result):
try:
self.employeeTableWidget.setRowCount(0)
for rowNumber, rowData in enumerate(result):
print("row data is",rowNumber,rowData)
self.employeeTableWidget.insertRow(rowNumber)
for columnNumber, data in enumerate(rowData):
print("data is",columnNumber,data)
self.employeeTableWidget.setItem(rowNumber, columnNumber,
QtWidgets.QTableWidgetItem(str(data)))
#print(str(data))
#print(self.employeeTableWidget.column(QtWidgets.QTableWidgetItem(1)))
#self.employeeTableWidget = self.employeeTableWidget.insertRow(2)
# disable Id column of the table
for i in range(self.employeeTableWidget.rowCount()):
#for j in range(10):
print("i am in for")
#item = QtWidgets.QTableWidgetItem(str(i * self.employeeTableWidget.columnCount()))
#item.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled)
self.employeeTableWidget.item(i,0).setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled)
except Exception as exp:
print(str(exp))
self.ErrorBar.setText(str(exp))
def main():
app = PyQt5.QtWidgets.QApplication(sys.argv)
window = faceUpdate()
window.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
你知道吗员工更新.ui你知道吗
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Dialog</class>
<widget class="QDialog" name="Dialog">
<property name="windowModality">
<enum>Qt::ApplicationModal</enum>
</property>
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>1165</width>
<height>684</height>
</rect>
</property>
<property name="windowTitle">
<string>Employee Update</string>
</property>
<property name="modal">
<bool>true</bool>
</property>
<widget class="QTableWidget" name="employeeTableWidget">
<property name="geometry">
<rect>
<x>10</x>
<y>90</y>
<width>1141</width>
<height>251</height>
</rect>
</property>
<property name="alternatingRowColors">
<bool>true</bool>
</property>
<property name="rowCount">
<number>7</number>
</property>
<property name="columnCount">
<number>11</number>
</property>
<attribute name="horizontalHeaderShowSortIndicator" stdset="0">
<bool>true</bool>
</attribute>
<row/>
<row/>
<row/>
<row/>
<row/>
<row/>
<row/>
<column>
<property name="text">
<string>Id</string>
</property>
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
</column>
<column>
<property name="text">
<string>First Name</string>
</property>
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
</column>
<column>
<property name="text">
<string>Last Name</string>
</property>
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
</column>
<column>
<property name="text">
<string>Address1</string>
</property>
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
</column>
<column>
<property name="text">
<string>Address2</string>
</property>
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
</column>
<column>
<property name="text">
<string>City</string>
</property>
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
</column>
<column>
<property name="text">
<string>State</string>
</property>
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
</column>
<column>
<property name="text">
<string>Pin</string>
</property>
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
</column>
<column>
<property name="text">
<string>Date of Birth</string>
</property>
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
</column>
<column>
<property name="text">
<string>Gender</string>
</property>
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
</column>
<column>
<property name="text">
<string>Photo</string>
</property>
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
</column>
<item row="0" column="0">
<property name="text">
<string/>
</property>
</item>
</widget>
<widget class="QLabel" name="idLabel">
<property name="geometry">
<rect>
<x>20</x>
<y>30</y>
<width>16</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>Id</string>
</property>
</widget>
<widget class="QLineEdit" name="idText">
<property name="geometry">
<rect>
<x>40</x>
<y>30</y>
<width>113</width>
<height>20</height>
</rect>
</property>
</widget>
<widget class="QLabel" name="firstNameLabel">
<property name="geometry">
<rect>
<x>160</x>
<y>30</y>
<width>51</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>First Name</string>
</property>
</widget>
<widget class="QLineEdit" name="firstNameText">
<property name="geometry">
<rect>
<x>220</x>
<y>30</y>
<width>113</width>
<height>20</height>
</rect>
</property>
</widget>
<widget class="QLabel" name="lastNameLabel">
<property name="geometry">
<rect>
<x>340</x>
<y>30</y>
<width>51</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>Last Name</string>
</property>
</widget>
<widget class="QLineEdit" name="lastNameText">
<property name="geometry">
<rect>
<x>400</x>
<y>30</y>
<width>113</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>1</string>
</property>
</widget>
<widget class="QPushButton" name="searchButton">
<property name="geometry">
<rect>
<x>530</x>
<y>30</y>
<width>75</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>Search</string>
</property>
</widget>
<widget class="QLabel" name="imageLabel">
<property name="geometry">
<rect>
<x>370</x>
<y>350</y>
<width>410</width>
<height>235</height>
</rect>
</property>
<property name="autoFillBackground">
<bool>false</bool>
</property>
<property name="styleSheet">
<string notr="true">font: 20pt "MS Shell Dlg 2";</string>
</property>
<property name="frameShape">
<enum>QFrame::Box</enum>
</property>
<property name="text">
<string>View Photo</string>
</property>
<property name="textFormat">
<enum>Qt::AutoText</enum>
</property>
<property name="scaledContents">
<bool>false</bool>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
<widget class="QLabel" name="ErrorBar">
<property name="geometry">
<rect>
<x>10</x>
<y>620</y>
<width>601</width>
<height>31</height>
</rect>
</property>
<property name="text">
<string/>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</widget>
<tabstops>
<tabstop>idText</tabstop>
<tabstop>firstNameText</tabstop>
<tabstop>lastNameText</tabstop>
<tabstop>searchButton</tabstop>
<tabstop>employeeTableWidget</tabstop>
</tabstops>
<resources/>
<connections/>
</ui>
你知道吗人脸识别.ui文件
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>1190</width>
<height>714</height>
</rect>
</property>
<property name="windowTitle">
<string/>
</property>
<widget class="QWidget" name="centralwidget"/>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>1190</width>
<height>21</height>
</rect>
</property>
<widget class="QMenu" name="faceCaptureMenu">
<property name="title">
<string>&Face Capture</string>
</property>
<addaction name="addFaceAct"/>
<addaction name="updateFaceAct"/>
</widget>
<widget class="QMenu" name="trainModelMenu">
<property name="title">
<string>Train &Model</string>
</property>
</widget>
<widget class="QMenu" name="predictMenu">
<property name="title">
<string>&Predict</string>
</property>
</widget>
<widget class="QMenu" name="windowMenu">
<property name="title">
<string>&Window</string>
</property>
</widget>
<addaction name="faceCaptureMenu"/>
<addaction name="trainModelMenu"/>
<addaction name="predictMenu"/>
<addaction name="windowMenu"/>
</widget>
<widget class="QStatusBar" name="statusbar"/>
<action name="addFaceAct">
<property name="text">
<string>&Add</string>
</property>
<property name="statusTip">
<string>Capture photo of the face</string>
</property>
<property name="shortcut">
<string>Ctrl+A</string>
</property>
</action>
<action name="updateFaceAct">
<property name="text">
<string>&Update</string>
</property>
<property name="shortcut">
<string>Ctrl+U</string>
</property>
</action>
<action name="closeAct">
<property name="text">
<string>&Close</string>
</property>
</action>
<action name="closeAllAct">
<property name="text">
<string>Close &All</string>
</property>
</action>
</widget>
<resources/>
<connections/>
</ui>
目前没有回答
相关问题 更多 >
编程相关推荐