PDA

View Full Version : ByPass Function from Other Class to Main Class



ricky5151
20th October 2017, 18:49
#gui.py file
from PyQt5 import QtCore, QtGui, QtWidgets
from gui2 import *
from gui3 import *
from gui4 import *

class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(700, 700)

self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.tabWidget = QtWidgets.QTabWidget(self.centralwidget)
self.tabWidget.setGeometry(QtCore.QRect(0, 0, 700, 700))
self.tabWidget.setObjectName("tabWidget")
MainWindow.setCentralWidget(self.centralwidget)

self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 700, 21))
self.menubar.setObjectName("menubar")
self.menuTools = QtWidgets.QMenu(self.menubar)
self.menuTools.setObjectName("menuTools")
self.menuView = QtWidgets.QMenu(self.menubar)
self.menuView.setObjectName("menuView")
MainWindow.setMenuBar(self.menubar)

self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)

self.Record_New_Data = QtWidgets.QAction(MainWindow)
self.Record_New_Data.setObjectName("Record_New_Data")
self.Attendances = QtWidgets.QAction(MainWindow)
self.Attendances.setObjectName("Attendances")
self.Attendance_Records = QtWidgets.QAction(MainWindow)
self.Attendance_Records.setObjectName("Attendance_Records")

self.menuTools.addAction(self.Record_New_Data)
self.menuTools.addAction(self.Attendances)
self.menuView.addAction(self.Attendance_Records)
self.menubar.addAction(self.menuTools.menuAction() )
self.menubar.addAction(self.menuView.menuAction())

self.tab1 = QtWidgets.QWidget()
self.Record_New_Data.triggered.connect(self.addTab _NewRecord)

self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)

def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "Face ID Attendance System"))
self.menuTools.setTitle(_translate("MainWindow", "Tools"))
self.menuView.setTitle(_translate("MainWindow", "View"))
self.Record_New_Data.setText(_translate("MainWindow", "Record New Data"))
self.Attendances.setText(_translate("MainWindow", "Attendances"))
self.Attendance_Records.setText(_translate("MainWindow", "Attendance Records"))


def addTab_NewRecord(self):
index = self.tabWidget.indexOf(self.tab1)
if index == -1:
data = Ui_RecordData()
data.setupUi(self.tab1)
self.tabWidget.addTab(self.tab1, 'New Record')
self.tabWidget.setCurrentIndex(self.tabWidget.coun t() - 1)
else:
self.tabWidget.setCurrentIndex(index)


if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())




#gui2.py
from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_RecordData(object):
def setupUi(self, RecordData):
RecordData.setObjectName("RecordData")
RecordData.resize(622, 528)
self.label = QtWidgets.QLabel(RecordData)
self.label.setGeometry(QtCore.QRect(10, 20, 331, 321))
self.label.setText("")
self.label.setObjectName("label")
self.pushButton = QtWidgets.QPushButton(RecordData)
self.pushButton.setGeometry(QtCore.QRect(60, 410, 75, 23))
self.pushButton.setObjectName("pushButton")
self.pushButton.clicked.connect(self.add_Text)

self.retranslateUi(RecordData)
QtCore.QMetaObject.connectSlotsByName(RecordData)

def retranslateUi(self, RecordData):
_translate = QtCore.QCoreApplication.translate
RecordData.setWindowTitle(_translate("RecordData", "Record Data"))
self.pushButton.setText(_translate("RecordData", "PushButton"))

def add_Text(self):
self.label.setText("ABC")


if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
RecordData = QtWidgets.QWidget()
ui = Ui_RecordData()
ui.setupUi(RecordData)
RecordData.show()
sys.exit(app.exec_())


I have 2 python file separately with different classes. When I execute gui.py file, I can add new tab with the Tab Widget consists of content from gui2.py file. However, all the widgets appeared in Tab Widget is not working. When I execute gui2.py file independently, it works.


12619 This image is the result obtained by execute gui2.py file
12620 This image is the result obtained by execute gui1.py file. It successful display all the widgets but not functioning.