0

I want to create dynamic object names and stack pages inside the Main Window page with PyQt5. I made some researches on the internet to get information about this, but I could not create dynamic variables in this class as I wanted. What methods should I use to create dynamic stack pages?

My Code:

from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QApplication

from User_UIs import deleteProcess, addProcessUI, connectServer


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):

    MainWindow.setObjectName("MainWindow")
    MainWindow.resize(830, 568)
    MainWindow.setWindowFlag(Qt.FramelessWindowHint)
    MainWindow.setStyleSheet("background-color: rgb(40, 40, 50);")
    self.centralwidget = QtWidgets.QWidget(MainWindow)
    self.centralwidget.setObjectName("centralwidget")
    
    #Add Stacked Widget
    self.stackedWidget = QtWidgets.QStackedWidget(self.centralwidget)
    self.stackedWidget.setGeometry(QtCore.QRect(246, 30, 584, 461))
    self.stackedWidget.setFrameShape(QtWidgets.QFrame.NoFrame)
    self.stackedWidget.setObjectName("stackedWidget")

    #Add Stacked Widget Page 1

    # static object definition
    self.feedingPage = QtWidgets.QWidget()
    self.feedingPage.setObjectName("feedingPage")

    # Add row button for tableWidget
    self.addRowButton = QtWidgets.QPushButton(self.groupBox)
    self.addRowButton.setGeometry(QtCore.QRect(501, 210, 75, 23))
    self.addRowButton.setStyleSheet(open('buttonStylesheet.css').read())
    icon7 = QtGui.QIcon()
    icon7.addPixmap(QtGui.QPixmap("Icons/icons8-add-row-50.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
    self.addRowButton.setIcon(icon7)
    self.addRowButton.setObjectName("addRowButton")

    # TableWidget Definition
    self.measuringItemTable1 = QtWidgets.QTableWidget(self.groupBox)
    self.measuringItemTable1.setGeometry(QtCore.QRect(0, 250, 591, 211))
    self.measuringItemTable1.setStyleSheet(
        "background-color: rgb(240, 240, 240);\n""color: rgb(80, 80, 105);\n""\n""    border-style: outset;\n""    border-width: 0px;")
    self.measuringItemTable1.setObjectName("measuringItemTable1")
    self.measuringItemTable1.setColumnCount(3)
    self.measuringItemTable1.setRowCount(0)
    item = QtWidgets.QTableWidgetItem()
    self.measuringItemTable1.setHorizontalHeaderItem(0, item)
    item = QtWidgets.QTableWidgetItem()
    self.measuringItemTable1.setHorizontalHeaderItem(1, item)
    item = QtWidgets.QTableWidgetItem()
    self.measuringItemTable1.setHorizontalHeaderItem(2, item)
    self.measuringItemTable1.horizontalHeader().setDefaultSectionSize(188)
    self.minFedTempEdit1 = QtWidgets.QLineEdit(self.groupBox)
    self.minFedTempEdit1.setGeometry(QtCore.QRect(260, 90, 211, 20))
    self.minFedTempEdit1.setStyleSheet(
        "background-color: rgb(240, 240, 240);\n""color: rgb(40, 40, 40);\n""font: 63 9pt \"Yu Gothic UI Semibold\";")
    self.minFedTempEdit1.setObjectName("minFedTempEdit1")
    self.stackedWidget.addWidget(self.feedingPage)
    #Stacked Page 1 End

    MainWindow.setCentralWidget(self.centralwidget)

    self.retranslateUi(MainWindow)
    self.stackedWidget.setCurrentIndex(0)

    QtCore.QMetaObject.connectSlotsByName(MainWindow)


def retranslateUi(self, MainWindow):
    _translate = QtCore.QCoreApplication.translate
    MainWindow.setWindowTitle(_translate("MainWindow", "Test Page"))

    """

    Another text set codes

    """

Main Window Execute

if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    mainUi = Ui_MainWindow()
    mainUi.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())
  • 1
    See [this answer](https://stackoverflow.com/a/65332605/2001654) to a similar question: it's about checkboxes but the same concept goes for any kind of object. Also, remember that files generated by pyuic should **never** be modified, so leave that file alone and create a new one that imports that and implements the actual logic to your program. Read more about this topic on the official guidelines about [using Designer](https://www.riverbankcomputing.com/static/Docs/PyQt5/designer.html). – musicamante Dec 17 '20 at 12:13
  • This answer worked well for me. Tried it today and dynamic naming works fine. Thank you! – Baranalp Aslandoğan Dec 22 '20 at 11:45

0 Answers0