[PyQt] [Solved]Help Getting Started on Scene Swapping - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: GUI (https://python-forum.io/forum-10.html) +--- Thread: [PyQt] [Solved]Help Getting Started on Scene Swapping (/thread-37211.html) Pages:
1
2
|
[Solved]Help Getting Started on Scene Swapping - Extra - May-12-2022 Hello, I have yet another question, but this one entails replacing the current screen/window with a new one when it is called. I'm trying to have my AdminMenu.py(A PyQT GUI) open on the same windows after the user has logged in on the LoginScreen.py(A PyQT GUI). How can I achieve this? Do I just call the class Ui_MainDisplay(object):? I looked online but I can't find many tutorials on this, so any help is greatly appreciated. Thanks in advance. The validate chunk of my Login Screen Code which will take the user to the appropriate menu (I'm only focusing on adminMenu for now): #--------------------------------------------------------------- # Validate Function -> Validates user #--------------------------------------------------------------- #Pass in user and password variables from login function #Check if the user is valid (registered in database) -> Give access to inventory program #If user is not valid -> return to login #-->TODO: Write the user and current date to a file to keep track of logins def validate(userInputName, userInputPassword): if StandardUsers().get(userInputName) == userInputPassword: print('Success! You are now logged in as: ' + userInputName) #Switch from this screen to the MainMenu Screen #mainMenu() if SuperUsers().get(userInputName) == userInputPassword: print('Success! You are now logged in as: ' + userInputName) #Switch from this csreen to the AdminMenu Screen #adminMenu() else: print('You are not registered to use this program') #--------------------------------------------------------------- My AdminMenu screen code (Right now): from PyQt5 import QtCore, QtGui, QtWidgets class Ui_MainDisplay(object): def setupUi(self, MainDisplay): MainDisplay.setObjectName("MainDisplay") MainDisplay.resize(1123, 903) MainDisplay.setStyleSheet("background-color: rgb(0, 170, 255);") self.centralwidget = QtWidgets.QWidget(MainDisplay) self.centralwidget.setObjectName("centralwidget") self.gridLayout = QtWidgets.QGridLayout(self.centralwidget) self.gridLayout.setObjectName("gridLayout") self.verticalLayout = QtWidgets.QVBoxLayout() self.verticalLayout.setContentsMargins(-1, 0, -1, 0) self.verticalLayout.setSpacing(6) self.verticalLayout.setObjectName("verticalLayout") self.AddItemButton = QtWidgets.QPushButton(self.centralwidget) font = QtGui.QFont() font.setPointSize(10) font.setBold(True) font.setWeight(75) self.AddItemButton.setFont(font) self.AddItemButton.setStyleSheet("background-color: rgb(85, 255, 0);\n" "border-style: outset;\n" "border-width: 2px;\n" "border-radius: 15px;\n" "border-color: black;\n" "padding: 4px;\n" "\n" "") self.AddItemButton.setObjectName("AddItemButton") self.verticalLayout.addWidget(self.AddItemButton) self.DeleteItemButton = QtWidgets.QPushButton(self.centralwidget) font = QtGui.QFont() font.setPointSize(10) font.setBold(True) font.setWeight(75) self.DeleteItemButton.setFont(font) self.DeleteItemButton.setStyleSheet("background-color: rgb(255, 65, 68);\n" "border-style: outset;\n" "border-width: 2px;\n" "border-radius: 15px;\n" "border-color: black;\n" "padding: 4px;\n" "") self.DeleteItemButton.setObjectName("DeleteItemButton") self.verticalLayout.addWidget(self.DeleteItemButton) self.CheckoutButton = QtWidgets.QPushButton(self.centralwidget) font = QtGui.QFont() font.setPointSize(10) font.setBold(True) font.setWeight(75) self.CheckoutButton.setFont(font) self.CheckoutButton.setStyleSheet("background-color: rgb(255, 255, 0);\n" "border-style: outset;\n" "border-width: 2px;\n" "border-radius: 15px;\n" "border-color: black;\n" "padding: 4px;\n" "") self.CheckoutButton.setObjectName("CheckoutButton") self.verticalLayout.addWidget(self.CheckoutButton) self.ReturnButton = QtWidgets.QPushButton(self.centralwidget) font = QtGui.QFont() font.setPointSize(10) font.setBold(True) font.setWeight(75) self.ReturnButton.setFont(font) self.ReturnButton.setStyleSheet("background-color: rgb(255, 170, 32);\n" "border-style: outset;\n" "border-width: 2px;\n" "border-radius: 15px;\n" "border-color: black;\n" "padding: 4px;\n" "") self.ReturnButton.setObjectName("ReturnButton") self.verticalLayout.addWidget(self.ReturnButton) self.ScanBarcodeButton = QtWidgets.QPushButton(self.centralwidget) font = QtGui.QFont() font.setPointSize(10) font.setBold(True) font.setWeight(75) self.ScanBarcodeButton.setFont(font) self.ScanBarcodeButton.setStyleSheet("background-color: rgb(211, 211, 211);\n" "border-style: outset;\n" "border-width: 2px;\n" "border-radius: 15px;\n" "border-color: black;\n" "padding: 4px;\n" "") self.ScanBarcodeButton.setObjectName("ScanBarcodeButton") self.verticalLayout.addWidget(self.ScanBarcodeButton) self.MoreInfoButton = QtWidgets.QPushButton(self.centralwidget) font = QtGui.QFont() font.setPointSize(10) font.setBold(True) font.setWeight(75) self.MoreInfoButton.setFont(font) self.MoreInfoButton.setStyleSheet("background-color: rgb(196, 17, 255);\n" "border-style: outset;\n" "border-width: 2px;\n" "border-radius: 15px;\n" "border-color: black;\n" "padding: 4px;") self.MoreInfoButton.setObjectName("MoreInfoButton") self.verticalLayout.addWidget(self.MoreInfoButton) self.RefreshButton = QtWidgets.QPushButton(self.centralwidget) font = QtGui.QFont() font.setPointSize(10) font.setBold(True) font.setWeight(75) self.RefreshButton.setFont(font) self.RefreshButton.setStyleSheet("background-color: rgb(0, 255, 255);\n" "border-style: outset;\n" "border-width: 2px;\n" "border-radius: 15px;\n" "border-color: black;\n" "padding: 4px;\n" "\n" "") self.RefreshButton.setObjectName("RefreshButton") self.verticalLayout.addWidget(self.RefreshButton) spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Policy.Minimum, QtWidgets.QSizePolicy.Policy.Expanding) self.verticalLayout.addItem(spacerItem) self.LogoutButton = QtWidgets.QPushButton(self.centralwidget) font = QtGui.QFont() font.setPointSize(10) font.setBold(True) font.setWeight(75) self.LogoutButton.setFont(font) self.LogoutButton.setStyleSheet("background-color: rgb(255, 255, 255);\n" "border-style: outset;\n" "border-width: 2px;\n" "border-radius: 15px;\n" "border-color: black;\n" "padding: 4px;\n" "") self.LogoutButton.setObjectName("LogoutButton") self.verticalLayout.addWidget(self.LogoutButton) self.gridLayout.addLayout(self.verticalLayout, 4, 3, 1, 1) self.Header = QtWidgets.QLabel(self.centralwidget) font = QtGui.QFont() font.setPointSize(15) font.setBold(True) font.setWeight(75) self.Header.setFont(font) self.Header.setStyleSheet("background-color: rgb(0, 0, 0);\n" "color: rgb(255, 255, 255);\n" "border-style: outset;\n" "border-width: 2px;\n" "border-radius: 15px;\n" "border-color: black;\n" "padding: 4px;") self.Header.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter) self.Header.setObjectName("Header") self.gridLayout.addWidget(self.Header, 0, 1, 1, 3) self.SearchButton = QtWidgets.QPushButton(self.centralwidget) font = QtGui.QFont() font.setPointSize(10) font.setBold(True) font.setWeight(75) self.SearchButton.setFont(font) self.SearchButton.setStyleSheet("background-color: rgb(211, 211, 211);\n" "border-style: outset;\n" "border-width: 2px;\n" "border-radius: 15px;\n" "border-color: black;\n" "padding: 4px;\n" "") self.SearchButton.setObjectName("SearchButton") self.gridLayout.addWidget(self.SearchButton, 2, 1, 1, 1) self.SearchBar = QtWidgets.QLineEdit(self.centralwidget) self.SearchBar.setStyleSheet("background-color: rgb(255, 255, 255);") self.SearchBar.setObjectName("SearchBar") self.gridLayout.addWidget(self.SearchBar, 2, 2, 1, 1) self.InventoryDisplay = QtWidgets.QTableWidget(self.centralwidget) font = QtGui.QFont() font.setBold(False) font.setWeight(50) self.InventoryDisplay.setFont(font) self.InventoryDisplay.setStyleSheet("background-color: rgb(255, 255, 255);\n" "") self.InventoryDisplay.setObjectName("InventoryDisplay") self.InventoryDisplay.setColumnCount(11) self.InventoryDisplay.setRowCount(0) item = QtWidgets.QTableWidgetItem() self.InventoryDisplay.setHorizontalHeaderItem(0, item) item = QtWidgets.QTableWidgetItem() self.InventoryDisplay.setHorizontalHeaderItem(1, item) item = QtWidgets.QTableWidgetItem() self.InventoryDisplay.setHorizontalHeaderItem(2, item) item = QtWidgets.QTableWidgetItem() self.InventoryDisplay.setHorizontalHeaderItem(3, item) item = QtWidgets.QTableWidgetItem() self.InventoryDisplay.setHorizontalHeaderItem(4, item) item = QtWidgets.QTableWidgetItem() self.InventoryDisplay.setHorizontalHeaderItem(5, item) item = QtWidgets.QTableWidgetItem() self.InventoryDisplay.setHorizontalHeaderItem(6, item) item = QtWidgets.QTableWidgetItem() self.InventoryDisplay.setHorizontalHeaderItem(7, item) item = QtWidgets.QTableWidgetItem() self.InventoryDisplay.setHorizontalHeaderItem(8, item) item = QtWidgets.QTableWidgetItem() self.InventoryDisplay.setHorizontalHeaderItem(9, item) item = QtWidgets.QTableWidgetItem() self.InventoryDisplay.setHorizontalHeaderItem(10, item) self.gridLayout.addWidget(self.InventoryDisplay, 4, 1, 1, 2) MainDisplay.setCentralWidget(self.centralwidget) self.statusbar = QtWidgets.QStatusBar(MainDisplay) self.statusbar.setObjectName("statusbar") MainDisplay.setStatusBar(self.statusbar) self.retranslateUi(MainDisplay) QtCore.QMetaObject.connectSlotsByName(MainDisplay) def retranslateUi(self, MainDisplay): _translate = QtCore.QCoreApplication.translate MainDisplay.setWindowTitle(_translate("MainDisplay", "MainWindow")) self.AddItemButton.setText(_translate("MainDisplay", "Add Item")) self.DeleteItemButton.setText(_translate("MainDisplay", "Delete Item")) self.CheckoutButton.setText(_translate("MainDisplay", "Check Out")) self.ReturnButton.setText(_translate("MainDisplay", "Return")) self.ScanBarcodeButton.setText(_translate("MainDisplay", "Scan Barcode")) self.MoreInfoButton.setText(_translate("MainDisplay", "More Info")) self.RefreshButton.setText(_translate("MainDisplay", "Refresh")) self.LogoutButton.setText(_translate("MainDisplay", "Log Out")) self.Header.setText(_translate("MainDisplay", "Admin Menu")) self.SearchButton.setText(_translate("MainDisplay", "Search")) item = self.InventoryDisplay.horizontalHeaderItem(0) item.setText(_translate("MainDisplay", "ID")) item = self.InventoryDisplay.horizontalHeaderItem(1) item.setText(_translate("MainDisplay", "Name")) item = self.InventoryDisplay.horizontalHeaderItem(2) item.setText(_translate("MainDisplay", "Quantity")) item = self.InventoryDisplay.horizontalHeaderItem(3) item.setText(_translate("MainDisplay", "Price ($)")) item = self.InventoryDisplay.horizontalHeaderItem(4) item.setText(_translate("MainDisplay", "Sell Price ($)")) item = self.InventoryDisplay.horizontalHeaderItem(5) item.setText(_translate("MainDisplay", "Description")) item = self.InventoryDisplay.horizontalHeaderItem(6) item.setText(_translate("MainDisplay", "Category")) item = self.InventoryDisplay.horizontalHeaderItem(7) item.setText(_translate("MainDisplay", "Location")) item = self.InventoryDisplay.horizontalHeaderItem(8) item.setText(_translate("MainDisplay", "Length (Ft)")) item = self.InventoryDisplay.horizontalHeaderItem(9) item.setText(_translate("MainDisplay", "Barcode #")) item = self.InventoryDisplay.horizontalHeaderItem(10) item.setText(_translate("MainDisplay", "Date Updated")) if __name__ == "__main__": import sys app = QtWidgets.QApplication(sys.argv) MainDisplay = QtWidgets.QMainWindow() ui = Ui_MainDisplay() ui.setupUi(MainDisplay) MainDisplay.show() sys.exit(app.exec())Updated: 05/14/22 to show the right code. I accidently posted the AdminMenu code twice The full Login Screen Code: from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5.QtWidgets import QMessageBox from DataBases.UserDatabase import StandardUsers, SuperUsers from AdminMenu import Ui_MainDisplay class Ui_Loginscreen(object): def setupUi(self, Loginscreen): Loginscreen.setObjectName("Loginscreen") Loginscreen.resize(1108, 895) Loginscreen.setStyleSheet("background-color: rgb(0, 170, 255);") self.centralwidget = QtWidgets.QWidget(Loginscreen) self.centralwidget.setObjectName("centralwidget") self.gridLayout = QtWidgets.QGridLayout(self.centralwidget) self.gridLayout.setObjectName("gridLayout") self.Header = QtWidgets.QLabel(self.centralwidget) font = QtGui.QFont() font.setPointSize(20) font.setBold(True) font.setWeight(75) self.Header.setFont(font) self.Header.setAlignment(QtCore.Qt.AlignCenter) self.Header.setObjectName("Header") self.gridLayout.addWidget(self.Header, 0, 0, 1, 1) self.formLayout_2 = QtWidgets.QFormLayout() self.formLayout_2.setObjectName("formLayout_2") self.NameLabel = QtWidgets.QLabel(self.centralwidget) font = QtGui.QFont() font.setPointSize(10) font.setBold(True) font.setWeight(75) self.NameLabel.setFont(font) self.NameLabel.setObjectName("NameLabel") self.formLayout_2.setWidget(0, QtWidgets.QFormLayout.LabelRole, self.NameLabel) self.NameInput = QtWidgets.QLineEdit(self.centralwidget) self.NameInput.setStyleSheet("background-color: rgb(255, 255, 255);") self.NameInput.setText("") self.NameInput.setObjectName("NameInput") self.formLayout_2.setWidget(0, QtWidgets.QFormLayout.FieldRole, self.NameInput) self.PasswordLabel = QtWidgets.QLabel(self.centralwidget) font = QtGui.QFont() font.setPointSize(10) font.setBold(True) font.setWeight(75) self.PasswordLabel.setFont(font) self.PasswordLabel.setObjectName("PasswordLabel") self.formLayout_2.setWidget(1, QtWidgets.QFormLayout.LabelRole, self.PasswordLabel) self.PasswordInput = QtWidgets.QLineEdit(self.centralwidget) font = QtGui.QFont() font.setFamily("Wingdings") self.PasswordInput.setFont(font) self.PasswordInput.setStyleSheet("background-color: rgb(255, 255, 255);") self.PasswordInput.setText("") self.PasswordInput.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter) self.PasswordInput.setObjectName("PasswordInput") self.formLayout_2.setWidget(1, QtWidgets.QFormLayout.FieldRole, self.PasswordInput) self.label = QtWidgets.QLabel(self.centralwidget) font = QtGui.QFont() font.setPointSize(8) font.setItalic(True) self.label.setFont(font) self.label.setAlignment(QtCore.Qt.AlignCenter) self.label.setObjectName("label") self.formLayout_2.setWidget(2, QtWidgets.QFormLayout.FieldRole, self.label) spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) self.formLayout_2.setItem(3, QtWidgets.QFormLayout.FieldRole, spacerItem) self.LoginButton = QtWidgets.QPushButton(self.centralwidget) font = QtGui.QFont() font.setPointSize(10) font.setBold(True) font.setWeight(75) self.LoginButton.setFont(font) self.LoginButton.setStyleSheet("background-color: rgb(211, 211, 211);\n" "border-style: outset;\n" "border-width: 2px;\n" "border-radius: 15px;\n" "border-color: black;\n" "padding: 4px;\n" "") self.LoginButton.setObjectName("LoginButton") self.formLayout_2.setWidget(4, QtWidgets.QFormLayout.FieldRole, self.LoginButton) self.gridLayout.addLayout(self.formLayout_2, 1, 0, 1, 1) Loginscreen.setCentralWidget(self.centralwidget) self.statusbar = QtWidgets.QStatusBar(Loginscreen) self.statusbar.setObjectName("statusbar") Loginscreen.setStatusBar(self.statusbar) self.retranslateUi(Loginscreen) QtCore.QMetaObject.connectSlotsByName(Loginscreen) def retranslateUi(self, Loginscreen): _translate = QtCore.QCoreApplication.translate Loginscreen.setWindowTitle(_translate("Loginscreen", "E.I.S")) self.Header.setText(_translate("Loginscreen", "Electronic Inventory System (E.I.S)")) self.NameLabel.setText(_translate("Loginscreen", "Name")) self.PasswordLabel.setText(_translate("Loginscreen", "Password")) self.label.setText(_translate("Loginscreen", "\n" "\n" "\n" "\n" "Electronic Inventory System (E.I.S)\n" "Version: 2.6\n" "Last Updated: 05/11/2022\n" "\n" "\n" "")) self.LoginButton.setText(_translate("Loginscreen", "Log In")) #------------------------------------------ #Actions #------------------------------------------ #When the Login button is clicked -> LoginClicked Function LoginButton = self.LoginButton LoginButton.clicked.connect(self.LoginClicked) #------------------------------------------ #---------------------------------- #Store Name and Password def LoginClicked(self): userInputName = self.NameInput.text() userInputPassword = self.PasswordInput.text() #Print in terminal for testing: print("The Login Button was clicked") print("Name: " + userInputName) print("Password: " + userInputPassword) #Validate Login Info if StandardUsers().get(userInputName) == userInputPassword: print('Success! You are now logged in as: ' + userInputName) #Switch from this screen to the MainMenu Screen #mainMenu() if SuperUsers().get(userInputName) == userInputPassword: print('Success! You are now logged in as: ' + userInputName) #Switch from this screen to the AdminMenu Screen #adminMenu() self.win = Ui_MainDisplay() self.win.show() self.close() else: #Call Invalid Credentials Popup self.invalidCredentials() print('You are not registered to use this program') #---------------------------------- #----------------------------------------------------------------- #Invalid Credentails Popup: def invalidCredentials(self): msgBox = QMessageBox() msgBox.setIcon(QMessageBox.Critical) msgBox.setText("You are not registered to use this program") msgBox.setWindowTitle("Invalid Credentials") msgBox.setStandardButtons(QMessageBox.Ok) msgBox.buttonClicked.connect(msgButtonClick) returnValue = msgBox.exec() if returnValue == QMessageBox.Ok: print('OK was clicked') def msgButtonClick(i): print("Button clicked is:",i.text()) #----------------------------------------------------------------- if __name__ == "__main__": import sys app = QtWidgets.QApplication(sys.argv) Loginscreen = QtWidgets.QMainWindow() ui = Ui_Loginscreen() ui.setupUi(Loginscreen) Loginscreen.show() sys.exit(app.exec_()) RE: Help Getting Started on Scene Swapping - deanhystad - May-13-2022 Why the same window? Most applications that have a login use a dialog. If you really want the login to be a different "view" in the main window I suggest using a QStackedWidget. This is like a tabbed widget, but without the tabs. Your program can decide which view in the "stack" is currently on top. https://www.tutorialspoint.com/pyqt/pyqt_qstackedwidget.htm RE: Help Getting Started on Scene Swapping - Extra - May-13-2022 But how do I take my whole AdminMenu.py code and stack it in front of the Loginscreen.py? I have them in two different python scripts (LoginScreen.py & AdminMenu.py) so how would I call the AdminMenu.show and stack it? I was trying things and put the main in my AdminMenu in a function (AdminMenu()) so It can be called from the LoginMenu AdminMenu.py def AdminMenu(): import sys app = QtWidgets.QApplication(sys.argv) MainDisplay = QtWidgets.QMainWindow() ui = Ui_MainDisplay() ui.setupUi(MainDisplay) MainDisplay.show() sys.exit(app.exec()) if __name__ == "__main__": AdminMenu()In my LoginScreen.py under my validate function: if SuperUsers().get(userInputName) == userInputPassword: print('Success! You are now logged in as: ' + userInputName) #Switch from this screen to the AdminMenu Screen AdminMenu() #Open Admin Menu ScreenBut if I run it and log in as an Admin I get: Am I close? I would probably have to exit the LoginScreen and quickly open the AdminMenu or something?
RE: Help Getting Started on Scene Swapping - Axel_Erfurt - May-14-2022 Login screen code and admin menu code are the same? That's how you posted it. RE: Help Getting Started on Scene Swapping - Axel_Erfurt - May-14-2022 This is an example to open mainWin on success import sys from PyQt5.QtWidgets import (QApplication, QWidget, QPushButton, QMainWindow, QLabel, QLineEdit, QGridLayout, QMessageBox) from PyQt5.QtCore import Qt class mainWin(QMainWindow): def __init__(self, parent = None): super(mainWin, self).__init__(parent) self.setGeometry(0, 0, 800, 600) self.lbl = QLabel(text = "Main Window", alignment = Qt.AlignCenter) self.setCentralWidget(self.lbl) self.setWindowTitle("Main Window") class LoginForm(QWidget): def __init__(self): super().__init__() self.setWindowTitle('Login') self.setGeometry(0, 0, 800, 600) layout = QGridLayout() label_name = QLabel('Username:') self.lineEdit_username = QLineEdit("user") self.lineEdit_username.setPlaceholderText('Please enter your username') layout.addWidget(label_name, 0, 0) layout.addWidget(self.lineEdit_username, 0, 1) label_password = QLabel('Password:') self.lineEdit_password = QLineEdit("000") self.lineEdit_password.setPlaceholderText('Please enter your password') layout.addWidget(label_password, 1, 0) layout.addWidget(self.lineEdit_password, 1, 1) button_login = QPushButton('Login') button_login.clicked.connect(self.check_password) layout.addWidget(button_login, 2, 1, 1, 1) empty = QWidget() layout.addWidget(empty, 3, 1, 1, 1) self.setLayout(layout) def check_password(self): msg = QMessageBox() if self.lineEdit_username.text() == 'user' and self.lineEdit_password.text() == '000': self.win = mainWin() self.win.show() self.close() else: msg.setText('Incorrect Username or Password\ntry again') msg.exec_() return if __name__ == '__main__': app = QApplication(sys.argv) form = LoginForm() form.show() sys.exit(app.exec_()) RE: Help Getting Started on Scene Swapping - Extra - May-14-2022 Sorry, I'm still having a bit of troubles. I did self.win which calls my MainDisplay from my AdminMenu.py: if SuperUsers().get(userInputName) == userInputPassword: print('Success! You are now logged in as: ' + userInputName) #Switch from this screen to the AdminMenu Screen self.win = Ui_MainDisplay() self.win.show() self.close()But when I try to login in as the admin I get this error: What am I missing/doing wrong?And this is my AdminMenu.py and I updated the previous post to show the correct LoginMenu code: from PyQt5 import QtCore, QtGui, QtWidgets class Ui_MainDisplay(object): def setupUi(self, MainDisplay): MainDisplay.setObjectName("MainDisplay") MainDisplay.resize(1123, 903) MainDisplay.setStyleSheet("background-color: rgb(0, 170, 255);") self.centralwidget = QtWidgets.QWidget(MainDisplay) self.centralwidget.setObjectName("centralwidget") self.gridLayout = QtWidgets.QGridLayout(self.centralwidget) self.gridLayout.setObjectName("gridLayout") self.verticalLayout = QtWidgets.QVBoxLayout() self.verticalLayout.setContentsMargins(-1, 0, -1, 0) self.verticalLayout.setSpacing(6) self.verticalLayout.setObjectName("verticalLayout") self.AddItemButton = QtWidgets.QPushButton(self.centralwidget) font = QtGui.QFont() font.setPointSize(10) font.setBold(True) font.setWeight(75) self.AddItemButton.setFont(font) self.AddItemButton.setStyleSheet("background-color: rgb(85, 255, 0);\n" "border-style: outset;\n" "border-width: 2px;\n" "border-radius: 15px;\n" "border-color: black;\n" "padding: 4px;\n" "\n" "") self.AddItemButton.setObjectName("AddItemButton") self.verticalLayout.addWidget(self.AddItemButton) self.DeleteItemButton = QtWidgets.QPushButton(self.centralwidget) font = QtGui.QFont() font.setPointSize(10) font.setBold(True) font.setWeight(75) self.DeleteItemButton.setFont(font) self.DeleteItemButton.setStyleSheet("background-color: rgb(255, 65, 68);\n" "border-style: outset;\n" "border-width: 2px;\n" "border-radius: 15px;\n" "border-color: black;\n" "padding: 4px;\n" "") self.DeleteItemButton.setObjectName("DeleteItemButton") self.verticalLayout.addWidget(self.DeleteItemButton) self.CheckoutButton = QtWidgets.QPushButton(self.centralwidget) font = QtGui.QFont() font.setPointSize(10) font.setBold(True) font.setWeight(75) self.CheckoutButton.setFont(font) self.CheckoutButton.setStyleSheet("background-color: rgb(255, 255, 0);\n" "border-style: outset;\n" "border-width: 2px;\n" "border-radius: 15px;\n" "border-color: black;\n" "padding: 4px;\n" "") self.CheckoutButton.setObjectName("CheckoutButton") self.verticalLayout.addWidget(self.CheckoutButton) self.ReturnButton = QtWidgets.QPushButton(self.centralwidget) font = QtGui.QFont() font.setPointSize(10) font.setBold(True) font.setWeight(75) self.ReturnButton.setFont(font) self.ReturnButton.setStyleSheet("background-color: rgb(255, 170, 32);\n" "border-style: outset;\n" "border-width: 2px;\n" "border-radius: 15px;\n" "border-color: black;\n" "padding: 4px;\n" "") self.ReturnButton.setObjectName("ReturnButton") self.verticalLayout.addWidget(self.ReturnButton) self.ScanBarcodeButton = QtWidgets.QPushButton(self.centralwidget) font = QtGui.QFont() font.setPointSize(10) font.setBold(True) font.setWeight(75) self.ScanBarcodeButton.setFont(font) self.ScanBarcodeButton.setStyleSheet("background-color: rgb(211, 211, 211);\n" "border-style: outset;\n" "border-width: 2px;\n" "border-radius: 15px;\n" "border-color: black;\n" "padding: 4px;\n" "") self.ScanBarcodeButton.setObjectName("ScanBarcodeButton") self.verticalLayout.addWidget(self.ScanBarcodeButton) self.MoreInfoButton = QtWidgets.QPushButton(self.centralwidget) font = QtGui.QFont() font.setPointSize(10) font.setBold(True) font.setWeight(75) self.MoreInfoButton.setFont(font) self.MoreInfoButton.setStyleSheet("background-color: rgb(196, 17, 255);\n" "border-style: outset;\n" "border-width: 2px;\n" "border-radius: 15px;\n" "border-color: black;\n" "padding: 4px;") self.MoreInfoButton.setObjectName("MoreInfoButton") self.verticalLayout.addWidget(self.MoreInfoButton) self.RefreshButton = QtWidgets.QPushButton(self.centralwidget) font = QtGui.QFont() font.setPointSize(10) font.setBold(True) font.setWeight(75) self.RefreshButton.setFont(font) self.RefreshButton.setStyleSheet("background-color: rgb(0, 255, 255);\n" "border-style: outset;\n" "border-width: 2px;\n" "border-radius: 15px;\n" "border-color: black;\n" "padding: 4px;\n" "\n" "") self.RefreshButton.setObjectName("RefreshButton") self.verticalLayout.addWidget(self.RefreshButton) spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Policy.Minimum, QtWidgets.QSizePolicy.Policy.Expanding) self.verticalLayout.addItem(spacerItem) self.LogoutButton = QtWidgets.QPushButton(self.centralwidget) font = QtGui.QFont() font.setPointSize(10) font.setBold(True) font.setWeight(75) self.LogoutButton.setFont(font) self.LogoutButton.setStyleSheet("background-color: rgb(255, 255, 255);\n" "border-style: outset;\n" "border-width: 2px;\n" "border-radius: 15px;\n" "border-color: black;\n" "padding: 4px;\n" "") self.LogoutButton.setObjectName("LogoutButton") self.verticalLayout.addWidget(self.LogoutButton) self.gridLayout.addLayout(self.verticalLayout, 4, 3, 1, 1) self.Header = QtWidgets.QLabel(self.centralwidget) font = QtGui.QFont() font.setPointSize(15) font.setBold(True) font.setWeight(75) self.Header.setFont(font) self.Header.setStyleSheet("background-color: rgb(0, 0, 0);\n" "color: rgb(255, 255, 255);\n" "border-style: outset;\n" "border-width: 2px;\n" "border-radius: 15px;\n" "border-color: black;\n" "padding: 4px;") self.Header.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter) self.Header.setObjectName("Header") self.gridLayout.addWidget(self.Header, 0, 1, 1, 3) self.SearchButton = QtWidgets.QPushButton(self.centralwidget) font = QtGui.QFont() font.setPointSize(10) font.setBold(True) font.setWeight(75) self.SearchButton.setFont(font) self.SearchButton.setStyleSheet("background-color: rgb(211, 211, 211);\n" "border-style: outset;\n" "border-width: 2px;\n" "border-radius: 15px;\n" "border-color: black;\n" "padding: 4px;\n" "") self.SearchButton.setObjectName("SearchButton") self.gridLayout.addWidget(self.SearchButton, 2, 1, 1, 1) self.SearchBar = QtWidgets.QLineEdit(self.centralwidget) self.SearchBar.setStyleSheet("background-color: rgb(255, 255, 255);") self.SearchBar.setObjectName("SearchBar") self.gridLayout.addWidget(self.SearchBar, 2, 2, 1, 1) self.InventoryDisplay = QtWidgets.QTableWidget(self.centralwidget) font = QtGui.QFont() font.setBold(False) font.setWeight(50) self.InventoryDisplay.setFont(font) self.InventoryDisplay.setStyleSheet("background-color: rgb(255, 255, 255);\n" "") self.InventoryDisplay.setObjectName("InventoryDisplay") self.InventoryDisplay.setColumnCount(11) self.InventoryDisplay.setRowCount(0) item = QtWidgets.QTableWidgetItem() self.InventoryDisplay.setHorizontalHeaderItem(0, item) item = QtWidgets.QTableWidgetItem() self.InventoryDisplay.setHorizontalHeaderItem(1, item) item = QtWidgets.QTableWidgetItem() self.InventoryDisplay.setHorizontalHeaderItem(2, item) item = QtWidgets.QTableWidgetItem() self.InventoryDisplay.setHorizontalHeaderItem(3, item) item = QtWidgets.QTableWidgetItem() self.InventoryDisplay.setHorizontalHeaderItem(4, item) item = QtWidgets.QTableWidgetItem() self.InventoryDisplay.setHorizontalHeaderItem(5, item) item = QtWidgets.QTableWidgetItem() self.InventoryDisplay.setHorizontalHeaderItem(6, item) item = QtWidgets.QTableWidgetItem() self.InventoryDisplay.setHorizontalHeaderItem(7, item) item = QtWidgets.QTableWidgetItem() self.InventoryDisplay.setHorizontalHeaderItem(8, item) item = QtWidgets.QTableWidgetItem() self.InventoryDisplay.setHorizontalHeaderItem(9, item) item = QtWidgets.QTableWidgetItem() self.InventoryDisplay.setHorizontalHeaderItem(10, item) self.gridLayout.addWidget(self.InventoryDisplay, 4, 1, 1, 2) MainDisplay.setCentralWidget(self.centralwidget) self.statusbar = QtWidgets.QStatusBar(MainDisplay) self.statusbar.setObjectName("statusbar") MainDisplay.setStatusBar(self.statusbar) self.retranslateUi(MainDisplay) QtCore.QMetaObject.connectSlotsByName(MainDisplay) def retranslateUi(self, MainDisplay): _translate = QtCore.QCoreApplication.translate MainDisplay.setWindowTitle(_translate("MainDisplay", "AdminMenu")) self.AddItemButton.setText(_translate("MainDisplay", "Add Item")) self.DeleteItemButton.setText(_translate("MainDisplay", "Delete Item")) self.CheckoutButton.setText(_translate("MainDisplay", "Check Out")) self.ReturnButton.setText(_translate("MainDisplay", "Return")) self.ScanBarcodeButton.setText(_translate("MainDisplay", "Scan Barcode")) self.MoreInfoButton.setText(_translate("MainDisplay", "More Info")) self.RefreshButton.setText(_translate("MainDisplay", "Refresh")) self.LogoutButton.setText(_translate("MainDisplay", "Log Out")) self.Header.setText(_translate("MainDisplay", "Admin Menu")) self.SearchButton.setText(_translate("MainDisplay", "Search")) item = self.InventoryDisplay.horizontalHeaderItem(0) item.setText(_translate("MainDisplay", "ID")) item = self.InventoryDisplay.horizontalHeaderItem(1) item.setText(_translate("MainDisplay", "Name")) item = self.InventoryDisplay.horizontalHeaderItem(2) item.setText(_translate("MainDisplay", "Quantity")) item = self.InventoryDisplay.horizontalHeaderItem(3) item.setText(_translate("MainDisplay", "Price ($)")) item = self.InventoryDisplay.horizontalHeaderItem(4) item.setText(_translate("MainDisplay", "Sell Price ($)")) item = self.InventoryDisplay.horizontalHeaderItem(5) item.setText(_translate("MainDisplay", "Description")) item = self.InventoryDisplay.horizontalHeaderItem(6) item.setText(_translate("MainDisplay", "Category")) item = self.InventoryDisplay.horizontalHeaderItem(7) item.setText(_translate("MainDisplay", "Location")) item = self.InventoryDisplay.horizontalHeaderItem(8) item.setText(_translate("MainDisplay", "Length (Ft)")) item = self.InventoryDisplay.horizontalHeaderItem(9) item.setText(_translate("MainDisplay", "Barcode #")) item = self.InventoryDisplay.horizontalHeaderItem(10) item.setText(_translate("MainDisplay", "Date Updated")) if __name__ == "__main__": import sys app = QtWidgets.QApplication(sys.argv) MainDisplay = QtWidgets.QMainWindow() ui = Ui_MainDisplay() ui.setupUi(MainDisplay) MainDisplay.show() sys.exit(app.exec()) RE: Help Getting Started on Scene Swapping - Axel_Erfurt - May-14-2022 You're using object instead of QMainWindow, so it can't work. import sys from PyQt5.QtWidgets import (QApplication, QWidget, QPushButton, QMainWindow, QLabel, QLineEdit, QTableWidget, QTableWidgetItem, QGridLayout, QVBoxLayout, QSizePolicy, QSpacerItem) from PyQt5.QtCore import Qt, QMetaObject, QCoreApplication from PyQt5.QtGui import QFont class Ui_MainDisplay(QMainWindow): def __init__(self, parent = None): super(Ui_MainDisplay, self).__init__(parent) self.setObjectName("MainDisplay") self.setGeometry(0, 0, 1123, 903) self.setStyleSheet("background-color: rgb(0, 170, 255);") self.centralwidget = QWidget(self) self.centralwidget.setObjectName("centralwidget") self.gridLayout = QGridLayout(self.centralwidget) self.gridLayout.setObjectName("gridLayout") self.verticalLayout = QVBoxLayout() self.verticalLayout.setContentsMargins(-1, 0, -1, 0) self.verticalLayout.setSpacing(6) self.verticalLayout.setObjectName("verticalLayout") self.AddItemButton = QPushButton(self.centralwidget) font = QFont() font.setPointSize(10) font.setBold(True) font.setWeight(75) self.AddItemButton.setFont(font) self.AddItemButton.setStyleSheet("background-color: rgb(85, 255, 0);\n" "border-style: outset;\n" "border-width: 2px;\n" "border-radius: 15px;\n" "border-color: black;\n" "padding: 4px;\n" "\n" "") self.AddItemButton.setObjectName("AddItemButton") self.verticalLayout.addWidget(self.AddItemButton) self.DeleteItemButton = QPushButton(self.centralwidget) font = QFont() font.setPointSize(10) font.setBold(True) font.setWeight(75) self.DeleteItemButton.setFont(font) self.DeleteItemButton.setStyleSheet("background-color: rgb(255, 65, 68);\n" "border-style: outset;\n" "border-width: 2px;\n" "border-radius: 15px;\n" "border-color: black;\n" "padding: 4px;\n" "") self.DeleteItemButton.setObjectName("DeleteItemButton") self.verticalLayout.addWidget(self.DeleteItemButton) self.CheckoutButton = QPushButton(self.centralwidget) font = QFont() font.setPointSize(10) font.setBold(True) font.setWeight(75) self.CheckoutButton.setFont(font) self.CheckoutButton.setStyleSheet("background-color: rgb(255, 255, 0);\n" "border-style: outset;\n" "border-width: 2px;\n" "border-radius: 15px;\n" "border-color: black;\n" "padding: 4px;\n" "") self.CheckoutButton.setObjectName("CheckoutButton") self.verticalLayout.addWidget(self.CheckoutButton) self.ReturnButton = QPushButton(self.centralwidget) font = QFont() font.setPointSize(10) font.setBold(True) font.setWeight(75) self.ReturnButton.setFont(font) self.ReturnButton.setStyleSheet("background-color: rgb(255, 170, 32);\n" "border-style: outset;\n" "border-width: 2px;\n" "border-radius: 15px;\n" "border-color: black;\n" "padding: 4px;\n" "") self.ReturnButton.setObjectName("ReturnButton") self.verticalLayout.addWidget(self.ReturnButton) self.ScanBarcodeButton = QPushButton(self.centralwidget) font = QFont() font.setPointSize(10) font.setBold(True) font.setWeight(75) self.ScanBarcodeButton.setFont(font) self.ScanBarcodeButton.setStyleSheet("background-color: rgb(211, 211, 211);\n" "border-style: outset;\n" "border-width: 2px;\n" "border-radius: 15px;\n" "border-color: black;\n" "padding: 4px;\n" "") self.ScanBarcodeButton.setObjectName("ScanBarcodeButton") self.verticalLayout.addWidget(self.ScanBarcodeButton) self.MoreInfoButton = QPushButton(self.centralwidget) font = QFont() font.setPointSize(10) font.setBold(True) font.setWeight(75) self.MoreInfoButton.setFont(font) self.MoreInfoButton.setStyleSheet("background-color: rgb(196, 17, 255);\n" "border-style: outset;\n" "border-width: 2px;\n" "border-radius: 15px;\n" "border-color: black;\n" "padding: 4px;") self.MoreInfoButton.setObjectName("MoreInfoButton") self.verticalLayout.addWidget(self.MoreInfoButton) self.RefreshButton = QPushButton(self.centralwidget) font = QFont() font.setPointSize(10) font.setBold(True) font.setWeight(75) self.RefreshButton.setFont(font) self.RefreshButton.setStyleSheet("background-color: rgb(0, 255, 255);\n" "border-style: outset;\n" "border-width: 2px;\n" "border-radius: 15px;\n" "border-color: black;\n" "padding: 4px;\n" "\n" "") self.RefreshButton.setObjectName("RefreshButton") self.verticalLayout.addWidget(self.RefreshButton) spacerItem = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding) self.verticalLayout.addItem(spacerItem) self.LogoutButton = QPushButton(self.centralwidget) font = QFont() font.setPointSize(10) font.setBold(True) font.setWeight(75) self.LogoutButton.setFont(font) self.LogoutButton.setStyleSheet("background-color: rgb(255, 255, 255);\n" "border-style: outset;\n" "border-width: 2px;\n" "border-radius: 15px;\n" "border-color: black;\n" "padding: 4px;\n" "") self.LogoutButton.setObjectName("LogoutButton") self.verticalLayout.addWidget(self.LogoutButton) self.gridLayout.addLayout(self.verticalLayout, 4, 3, 1, 1) self.Header = QLabel(self.centralwidget) font = QFont() font.setPointSize(15) font.setBold(True) font.setWeight(75) self.Header.setFont(font) self.Header.setStyleSheet("background-color: rgb(0, 0, 0);\n" "color: rgb(255, 255, 255);\n" "border-style: outset;\n" "border-width: 2px;\n" "border-radius: 15px;\n" "border-color: black;\n" "padding: 4px;") self.Header.setAlignment(Qt.AlignmentFlag.AlignCenter) self.Header.setObjectName("Header") self.gridLayout.addWidget(self.Header, 0, 1, 1, 3) self.SearchButton = QPushButton(self.centralwidget) font = QFont() font.setPointSize(10) font.setBold(True) font.setWeight(75)import sys from PyQt5.QtWidgets import (QApplication, QWidget, QPushButton, QMainWindow, QLabel, QLineEdit, QTableWidget, QTableWidgetItem, QGridLayout, QVBoxLayout, QSizePolicy, QSpacerItem) from PyQt5.QtCore import Qt, QMetaObject, QCoreApplication from PyQt5.QtGui import QFont class Ui_MainDisplay(QMainWindow): def __init__(self, parent = None): super(Ui_MainDisplay, self).__init__(parent) self.setObjectName("MainDisplay") self.setGeometry(0, 0, 1123, 903) self.setStyleSheet("background-color: rgb(0, 170, 255);") self.centralwidget = QWidget(self) self.centralwidget.setObjectName("centralwidget") self.gridLayout = QGridLayout(self.centralwidget) self.gridLayout.setObjectName("gridLayout") self.verticalLayout = QVBoxLayout() self.verticalLayout.setContentsMargins(-1, 0, -1, 0) self.verticalLayout.setSpacing(6) self.verticalLayout.setObjectName("verticalLayout") self.AddItemButton = QPushButton(self.centralwidget) font = QFont() font.setPointSize(10) font.setBold(True) font.setWeight(75) self.AddItemButton.setFont(font) self.AddItemButton.setStyleSheet("background-color: rgb(85, 255, 0);\n" "border-style: outset;\n" "border-width: 2px;\n" "border-radius: 15px;\n" "border-color: black;\n" "padding: 4px;\n" "\n" "") self.AddItemButton.setObjectName("AddItemButton") self.verticalLayout.addWidget(self.AddItemButton) self.DeleteItemButton = QPushButton(self.centralwidget) font = QFont() font.setPointSize(10) font.setBold(True) font.setWeight(75) self.DeleteItemButton.setFont(font) self.DeleteItemButton.setStyleSheet("background-color: rgb(255, 65, 68);\n" "border-style: outset;\n" "border-width: 2px;\n" "border-radius: 15px;\n" "border-color: black;\n" "padding: 4px;\n" "") self.DeleteItemButton.setObjectName("DeleteItemButton") self.verticalLayout.addWidget(self.DeleteItemButton) self.CheckoutButton = QPushButton(self.centralwidget) font = QFont() font.setPointSize(10) font.setBold(True) font.setWeight(75) self.CheckoutButton.setFont(font) self.CheckoutButton.setStyleSheet("background-color: rgb(255, 255, 0);\n" "border-style: outset;\n" "border-width: 2px;\n" "border-radius: 15px;\n" "border-color: black;\n" "padding: 4px;\n" "") self.CheckoutButton.setObjectName("CheckoutButton") self.verticalLayout.addWidget(self.CheckoutButton) self.ReturnButton = QPushButton(self.centralwidget) font = QFont() font.setPointSize(10) font.setBold(True) font.setWeight(75) self.ReturnButton.setFont(font) self.ReturnButton.setStyleSheet("background-color: rgb(255, 170, 32);\n" "border-style: outset;\n" "border-width: 2px;\n" "border-radius: 15px;\n" "border-color: black;\n" "padding: 4px;\n" "") self.ReturnButton.setObjectName("ReturnButton") self.verticalLayout.addWidget(self.ReturnButton) self.ScanBarcodeButton = QPushButton(self.centralwidget) font = QFont() font.setPointSize(10) font.setBold(True) font.setWeight(75) self.ScanBarcodeButton.setFont(font) self.ScanBarcodeButton.setStyleSheet("background-color: rgb(211, 211, 211);\n" "border-style: outset;\n" "border-width: 2px;\n" "border-radius: 15px;\n" "border-color: black;\n" "padding: 4px;\n" "") self.ScanBarcodeButton.setObjectName("ScanBarcodeButton") self.verticalLayout.addWidget(self.ScanBarcodeButton) self.MoreInfoButton = QPushButton(self.centralwidget) font = QFont() font.setPointSize(10) font.setBold(True) font.setWeight(75) self.MoreInfoButton.setFont(font) self.MoreInfoButton.setStyleSheet("background-color: rgb(196, 17, 255);\n" "border-style: outset;\n" "border-width: 2px;\n" "border-radius: 15px;\n" "border-color: black;\n" "padding: 4px;") self.MoreInfoButton.setObjectName("MoreInfoButton") self.verticalLayout.addWidget(self.MoreInfoButton) self.RefreshButton = QPushButton(self.centralwidget) font = QFont() font.setPointSize(10) font.setBold(True) font.setWeight(75) self.RefreshButton.setFont(font) self.RefreshButton.setStyleSheet("background-color: rgb(0, 255, 255);\n" "border-style: outset;\n" "border-width: 2px;\n" "border-radius: 15px;\n" "border-color: black;\n" "padding: 4px;\n" "\n" "") self.RefreshButton.setObjectName("RefreshButton") self.verticalLayout.addWidget(self.RefreshButton) spacerItem = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding) self.verticalLayout.addItem(spacerItem) self.LogoutButton = QPushButton(self.centralwidget) font = QFont() font.setPointSize(10) font.setBold(True) font.setWeight(75) self.LogoutButton.setFont(font) self.LogoutButton.setStyleSheet("background-color: rgb(255, 255, 255);\n" "border-style: outset;\n" "border-width: 2px;\n" "border-radius: 15px;\n" "border-color: black;\n" "padding: 4px;\n" "") self.LogoutButton.setObjectName("LogoutButton") self.verticalLayout.addWidget(self.LogoutButton) self.gridLayout.addLayout(self.verticalLayout, 4, 3, 1, 1) self.Header = QLabel(self.centralwidget) font = QFont() font.setPointSize(15) font.setBold(True) font.setWeight(75) self.Header.setFont(font) self.Header.setStyleSheet("background-color: rgb(0, 0, 0);\n" "color: rgb(255, 255, 255);\n" "border-style: outset;\n" "border-width: 2px;\n" "border-radius: 15px;\n" "border-color: black;\n" "padding: 4px;") self.Header.setAlignment(Qt.AlignmentFlag.AlignCenter) self.Header.setObjectName("Header") self.gridLayout.addWidget(self.Header, 0, 1, 1, 3) self.SearchButton = QPushButton(self.centralwidget) font = QFont() font.setPointSize(10) font.setBold(True) font.setWeight(75) self.SearchButton.setFont(font) self.SearchButton.setStyleSheet("background-color: rgb(211, 211, 211);\n" "border-style: outset;\n" "border-width: 2px;\n" "border-radius: 15px;\n" "border-color: black;\n" "padding: 4px;\n" "") self.SearchButton.setObjectName("SearchButton") self.gridLayout.addWidget(self.SearchButton, 2, 1, 1, 1) self.SearchBar = QLineEdit(self.centralwidget) self.SearchBar.setStyleSheet("background-color: rgb(255, 255, 255);") self.SearchBar.setObjectName("SearchBar") self.gridLayout.addWidget(self.SearchBar, 2, 2, 1, 1) self.InventoryDisplay = QTableWidget(self.centralwidget) font = QFont() font.setBold(False) font.setWeight(50) self.InventoryDisplay.setFont(font) self.InventoryDisplay.setStyleSheet("background-color: rgb(255, 255, 255);\n" "") self.InventoryDisplay.setObjectName("InventoryDisplay") self.InventoryDisplay.setColumnCount(11) self.InventoryDisplay.setRowCount(0) item = QTableWidgetItem() self.InventoryDisplay.setHorizontalHeaderItem(0, item) item = QTableWidgetItem() self.InventoryDisplay.setHorizontalHeaderItem(1, item) item = QTableWidgetItem() self.InventoryDisplay.setHorizontalHeaderItem(2, item) item = QTableWidgetItem() self.InventoryDisplay.setHorizontalHeaderItem(3, item) item = QTableWidgetItem() self.InventoryDisplay.setHorizontalHeaderItem(4, item) item = QTableWidgetItem() self.InventoryDisplay.setHorizontalHeaderItem(5, item) item = QTableWidgetItem() self.InventoryDisplay.setHorizontalHeaderItem(6, item) item = QTableWidgetItem() self.InventoryDisplay.setHorizontalHeaderItem(7, item) item = QTableWidgetItem() self.InventoryDisplay.setHorizontalHeaderItem(8, item) item = QTableWidgetItem() self.InventoryDisplay.setHorizontalHeaderItem(9, item) item = QTableWidgetItem() self.InventoryDisplay.setHorizontalHeaderItem(10, item) self.gridLayout.addWidget(self.InventoryDisplay, 4, 1, 1, 2) self.setCentralWidget(self.centralwidget) self.statusbar = self.statusBar() self.statusbar.setObjectName("statusbar") #self.setStatusBar(self.statusbar) self.retranslateUi(self) QMetaObject.connectSlotsByName(self) def retranslateUi(self, MainDisplay): _translate = QCoreApplication.translate self.setWindowTitle(_translate("MainDisplay", "AdminMenu")) self.AddItemButton.setText(_translate("MainDisplay", "Add Item")) self.DeleteItemButton.setText(_translate("MainDisplay", "Delete Item")) self.CheckoutButton.setText(_translate("MainDisplay", "Check Out")) self.ReturnButton.setText(_translate("MainDisplay", "Return")) self.ScanBarcodeButton.setText(_translate("MainDisplay", "Scan Barcode")) self.MoreInfoButton.setText(_translate("MainDisplay", "More Info")) self.RefreshButton.setText(_translate("MainDisplay", "Refresh")) self.LogoutButton.setText(_translate("MainDisplay", "Log Out")) self.Header.setText(_translate("MainDisplay", "Admin Menu")) self.SearchButton.setText(_translate("MainDisplay", "Search")) item = self.InventoryDisplay.horizontalHeaderItem(0) item.setText(_translate("MainDisplay", "ID")) item = self.InventoryDisplay.horizontalHeaderItem(1) item.setText(_translate("MainDisplay", "Name")) item = self.InventoryDisplay.horizontalHeaderItem(2) item.setText(_translate("MainDisplay", "Quantity")) item = self.InventoryDisplay.horizontalHeaderItem(3) item.setText(_translate("MainDisplay", "Price ($)")) item = self.InventoryDisplay.horizontalHeaderItem(4) item.setText(_translate("MainDisplay", "Sell Price ($)")) item = self.InventoryDisplay.horizontalHeaderItem(5) item.setText(_translate("MainDisplay", "Description")) item = self.InventoryDisplay.horizontalHeaderItem(6) item.setText(_translate("MainDisplay", "Category")) item = self.InventoryDisplay.horizontalHeaderItem(7) item.setText(_translate("MainDisplay", "Location")) item = self.InventoryDisplay.horizontalHeaderItem(8) item.setText(_translate("MainDisplay", "Length (Ft)")) item = self.InventoryDisplay.horizontalHeaderItem(9) item.setText(_translate("MainDisplay", "Barcode #")) item = self.InventoryDisplay.horizontalHeaderItem(10) item.setText(_translate("MainDisplay", "Date Updated")) if __name__ == '__main__': app = QApplication(sys.argv) win = Ui_MainDisplay() win.show() sys.exit(app.exec_()) self.SearchButton.setFont(font) self.SearchButton.setStyleSheet("background-color: rgb(211, 211, 211);\n" "border-style: outset;\n" "border-width: 2px;\n" "border-radius: 15px;\n" "border-color: black;\n" "padding: 4px;\n" "") self.SearchButton.setObjectName("SearchButton") self.gridLayout.addWidget(self.SearchButton, 2, 1, 1, 1) self.SearchBar = QLineEdit(self.centralwidget) self.SearchBar.setStyleSheet("background-color: rgb(255, 255, 255);") self.SearchBar.setObjectName("SearchBar") self.gridLayout.addWidget(self.SearchBar, 2, 2, 1, 1) self.InventoryDisplay = QTableWidget(self.centralwidget) font = QFont() font.setBold(False) font.setWeight(50) self.InventoryDisplay.setFont(font) self.InventoryDisplay.setStyleSheet("background-color: rgb(255, 255, 255);\n" "") self.InventoryDisplay.setObjectName("InventoryDisplay") self.InventoryDisplay.setColumnCount(11) self.InventoryDisplay.setRowCount(0) item = QTableWidgetItem() self.InventoryDisplay.setHorizontalHeaderItem(0, item) item = QTableWidgetItem() self.InventoryDisplay.setHorizontalHeaderItem(1, item) item = QTableWidgetItem() self.InventoryDisplay.setHorizontalHeaderItem(2, item) item = QTableWidgetItem() self.InventoryDisplay.setHorizontalHeaderItem(3, item) item = QTableWidgetItem() self.InventoryDisplay.setHorizontalHeaderItem(4, item) item = QTableWidgetItem() self.InventoryDisplay.setHorizontalHeaderItem(5, item) item = QTableWidgetItem() self.InventoryDisplay.setHorizontalHeaderItem(6, item) item = QTableWidgetItem() self.InventoryDisplay.setHorizontalHeaderItem(7, item) item = QTableWidgetItem() self.InventoryDisplay.setHorizontalHeaderItem(8, item) item = QTableWidgetItem() self.InventoryDisplay.setHorizontalHeaderItem(9, item) item = QTableWidgetItem() self.InventoryDisplay.setHorizontalHeaderItem(10, item) self.gridLayout.addWidget(self.InventoryDisplay, 4, 1, 1, 2) self.setCentralWidget(self.centralwidget) self.statusbar = self.statusBar() self.statusbar.setObjectName("statusbar") #self.setStatusBar(self.statusbar) self.retranslateUi(self) QMetaObject.connectSlotsByName(self) def retranslateUi(self, MainDisplay): _translate = QCoreApplication.translate self.setWindowTitle(_translate("MainDisplay", "AdminMenu")) self.AddItemButton.setText(_translate("MainDisplay", "Add Item")) self.DeleteItemButton.setText(_translate("MainDisplay", "Delete Item")) self.CheckoutButton.setText(_translate("MainDisplay", "Check Out")) self.ReturnButton.setText(_translate("MainDisplay", "Return")) self.ScanBarcodeButton.setText(_translate("MainDisplay", "Scan Barcode")) self.MoreInfoButton.setText(_translate("MainDisplay", "More Info")) self.RefreshButton.setText(_translate("MainDisplay", "Refresh")) self.LogoutButton.setText(_translate("MainDisplay", "Log Out")) self.Header.setText(_translate("MainDisplay", "Admin Menu")) self.SearchButton.setText(_translate("MainDisplay", "Search")) item = self.InventoryDisplay.horizontalHeaderItem(0) item.setText(_translate("MainDisplay", "ID")) item = self.InventoryDisplay.horizontalHeaderItem(1) item.setText(_translate("MainDisplay", "Name")) item = self.InventoryDisplay.horizontalHeaderItem(2) item.setText(_translate("MainDisplay", "Quantity")) item = self.InventoryDisplay.horizontalHeaderItem(3) item.setText(_translate("MainDisplay", "Price ($)")) item = self.InventoryDisplay.horizontalHeaderItem(4) item.setText(_translate("MainDisplay", "Sell Price ($)")) item = self.InventoryDisplay.horizontalHeaderItem(5) item.setText(_translate("MainDisplay", "Description")) item = self.InventoryDisplay.horizontalHeaderItem(6) item.setText(_translate("MainDisplay", "Category")) item = self.InventoryDisplay.horizontalHeaderItem(7) item.setText(_translate("MainDisplay", "Location")) item = self.InventoryDisplay.horizontalHeaderItem(8) item.setText(_translate("MainDisplay", "Length (Ft)")) item = self.InventoryDisplay.horizontalHeaderItem(9) item.setText(_translate("MainDisplay", "Barcode #")) item = self.InventoryDisplay.horizontalHeaderItem(10) item.setText(_translate("MainDisplay", "Date Updated")) if __name__ == '__main__': app = QApplication(sys.argv) win = Ui_MainDisplay() win.show() sys.exit(app.exec_()) RE: Help Getting Started on Scene Swapping - Extra - May-14-2022 Thanks so Much that helped! The AdminMenu now opens when after I login. The only problem I have now is that I get this error and the LoginScreen won't close: Does my LoginScreen.py have to use QMainWindow as well in order for it to work, or can I do something else?Thanks in advance. Here the LoginScreen code: from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5.QtWidgets import QMessageBox from DataBases.UserDatabase import StandardUsers, SuperUsers from Test import Ui_MainDisplay class Ui_Loginscreen(object): def setupUi(self, Loginscreen): Loginscreen.setObjectName("Loginscreen") Loginscreen.resize(1108, 895) Loginscreen.setStyleSheet("background-color: rgb(0, 170, 255);") self.centralwidget = QtWidgets.QWidget(Loginscreen) self.centralwidget.setObjectName("centralwidget") self.gridLayout = QtWidgets.QGridLayout(self.centralwidget) self.gridLayout.setObjectName("gridLayout") self.Header = QtWidgets.QLabel(self.centralwidget) font = QtGui.QFont() font.setPointSize(20) font.setBold(True) font.setWeight(75) self.Header.setFont(font) self.Header.setAlignment(QtCore.Qt.AlignCenter) self.Header.setObjectName("Header") self.gridLayout.addWidget(self.Header, 0, 0, 1, 1) self.formLayout_2 = QtWidgets.QFormLayout() self.formLayout_2.setObjectName("formLayout_2") self.NameLabel = QtWidgets.QLabel(self.centralwidget) font = QtGui.QFont() font.setPointSize(10) font.setBold(True) font.setWeight(75) self.NameLabel.setFont(font) self.NameLabel.setObjectName("NameLabel") self.formLayout_2.setWidget(0, QtWidgets.QFormLayout.LabelRole, self.NameLabel) self.NameInput = QtWidgets.QLineEdit(self.centralwidget) self.NameInput.setStyleSheet("background-color: rgb(255, 255, 255);") self.NameInput.setText("") self.NameInput.setObjectName("NameInput") self.formLayout_2.setWidget(0, QtWidgets.QFormLayout.FieldRole, self.NameInput) self.PasswordLabel = QtWidgets.QLabel(self.centralwidget) font = QtGui.QFont() font.setPointSize(10) font.setBold(True) font.setWeight(75) self.PasswordLabel.setFont(font) self.PasswordLabel.setObjectName("PasswordLabel") self.formLayout_2.setWidget(1, QtWidgets.QFormLayout.LabelRole, self.PasswordLabel) self.PasswordInput = QtWidgets.QLineEdit(self.centralwidget) font = QtGui.QFont() font.setFamily("Wingdings") self.PasswordInput.setFont(font) self.PasswordInput.setStyleSheet("background-color: rgb(255, 255, 255);") self.PasswordInput.setText("") self.PasswordInput.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter) self.PasswordInput.setObjectName("PasswordInput") self.formLayout_2.setWidget(1, QtWidgets.QFormLayout.FieldRole, self.PasswordInput) self.label = QtWidgets.QLabel(self.centralwidget) font = QtGui.QFont() font.setPointSize(8) font.setItalic(True) self.label.setFont(font) self.label.setAlignment(QtCore.Qt.AlignCenter) self.label.setObjectName("label") self.formLayout_2.setWidget(2, QtWidgets.QFormLayout.FieldRole, self.label) spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) self.formLayout_2.setItem(3, QtWidgets.QFormLayout.FieldRole, spacerItem) self.LoginButton = QtWidgets.QPushButton(self.centralwidget) font = QtGui.QFont() font.setPointSize(10) font.setBold(True) font.setWeight(75) self.LoginButton.setFont(font) self.LoginButton.setStyleSheet("background-color: rgb(211, 211, 211);\n" "border-style: outset;\n" "border-width: 2px;\n" "border-radius: 15px;\n" "border-color: black;\n" "padding: 4px;\n" "") self.LoginButton.setObjectName("LoginButton") self.formLayout_2.setWidget(4, QtWidgets.QFormLayout.FieldRole, self.LoginButton) self.gridLayout.addLayout(self.formLayout_2, 1, 0, 1, 1) Loginscreen.setCentralWidget(self.centralwidget) self.statusbar = QtWidgets.QStatusBar(Loginscreen) self.statusbar.setObjectName("statusbar") Loginscreen.setStatusBar(self.statusbar) self.retranslateUi(Loginscreen) QtCore.QMetaObject.connectSlotsByName(Loginscreen) def retranslateUi(self, Loginscreen): _translate = QtCore.QCoreApplication.translate Loginscreen.setWindowTitle(_translate("Loginscreen", "E.I.S")) self.Header.setText(_translate("Loginscreen", "Electronic Inventory System (E.I.S)")) self.NameLabel.setText(_translate("Loginscreen", "Name")) self.PasswordLabel.setText(_translate("Loginscreen", "Password")) self.label.setText(_translate("Loginscreen", "\n" "\n" "\n" "\n" "Electronic Inventory System (E.I.S)\n" "Version: 2.6\n" "Developed By: Paglia Industries\n" "Last Updated: 05/11/2022\n" "\n" "\n" "")) self.LoginButton.setText(_translate("Loginscreen", "Log In")) #------------------------------------------ #Actions #------------------------------------------ #When the Login button is clicked -> LoginClicked Function LoginButton = self.LoginButton LoginButton.clicked.connect(self.LoginClicked) #------------------------------------------ #---------------------------------- #Store Name and Password def LoginClicked(self): userInputName = self.NameInput.text() userInputPassword = self.PasswordInput.text() #Print in terminal for testing: print("The Login Button was clicked") print("Name: " + userInputName) print("Password: " + userInputPassword) #Validate Login Info if StandardUsers().get(userInputName) == userInputPassword: print('Success! You are now logged in as: ' + userInputName) #Switch from this screen to the MainMenu Screen #mainMenu() if SuperUsers().get(userInputName) == userInputPassword: print('Success! You are now logged in as: ' + userInputName) #Switch from this screen to the AdminMenu Screen #adminMenu() #Scene Swap Test: self.win = Ui_MainDisplay() self.win.show() self.close() else: #Call Invalid Credentials Popup self.invalidCredentials() print('You are not registered to use this program') #---------------------------------- #----------------------------------------------------------------- #Invalid Credentails Popup: def invalidCredentials(self): msgBox = QMessageBox() msgBox.setIcon(QMessageBox.Critical) msgBox.setText("You are not registered to use this program") msgBox.setWindowTitle("Invalid Credentials") msgBox.setStandardButtons(QMessageBox.Ok) msgBox.buttonClicked.connect(msgButtonClick) returnValue = msgBox.exec() if returnValue == QMessageBox.Ok: print('OK was clicked') def msgButtonClick(i): print("Button clicked is:",i.text()) #----------------------------------------------------------------- if __name__ == "__main__": import sys app = QtWidgets.QApplication(sys.argv) Loginscreen = QtWidgets.QMainWindow() ui = Ui_Loginscreen() ui.setupUi(Loginscreen) Loginscreen.show() sys.exit(app.exec_()) RE: Help Getting Started on Scene Swapping - Axel_Erfurt - May-14-2022 try this from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5.QtWidgets import QMessageBox from DataBases.UserDatabase import StandardUsers, SuperUsers from Test import Ui_MainDisplay class Ui_Loginscreen(QtWidgets.QMainWindow): def __init__(self, parent = None): super(Ui_Loginscreen, self).__init__(parent) self.setObjectName("Loginscreen") self.resize(1108, 895) self.setStyleSheet("background-color: rgb(0, 170, 255);") self.centralwidget = QtWidgets.QWidget() self.centralwidget.setObjectName("centralwidget") self.gridLayout = QtWidgets.QGridLayout(self.centralwidget) self.gridLayout.setObjectName("gridLayout") self.Header = QtWidgets.QLabel(self.centralwidget) font = QtGui.QFont() font.setPointSize(20) font.setBold(True) font.setWeight(75) self.Header.setFont(font) self.Header.setAlignment(QtCore.Qt.AlignCenter) self.Header.setObjectName("Header") self.gridLayout.addWidget(self.Header, 0, 0, 1, 1) self.formLayout_2 = QtWidgets.QFormLayout() self.formLayout_2.setObjectName("formLayout_2") self.NameLabel = QtWidgets.QLabel(self.centralwidget) font = QtGui.QFont() font.setPointSize(10) font.setBold(True) font.setWeight(75) self.NameLabel.setFont(font) self.NameLabel.setObjectName("NameLabel") self.formLayout_2.setWidget(0, QtWidgets.QFormLayout.LabelRole, self.NameLabel) self.NameInput = QtWidgets.QLineEdit(self.centralwidget) self.NameInput.setStyleSheet("background-color: rgb(255, 255, 255);") self.NameInput.setText("") self.NameInput.setObjectName("NameInput") self.formLayout_2.setWidget(0, QtWidgets.QFormLayout.FieldRole, self.NameInput) self.PasswordLabel = QtWidgets.QLabel(self.centralwidget) font = QtGui.QFont() font.setPointSize(10) font.setBold(True) font.setWeight(75) self.PasswordLabel.setFont(font) self.PasswordLabel.setObjectName("PasswordLabel") self.formLayout_2.setWidget(1, QtWidgets.QFormLayout.LabelRole, self.PasswordLabel) self.PasswordInput = QtWidgets.QLineEdit(self.centralwidget) font = QtGui.QFont() font.setFamily("Wingdings") self.PasswordInput.setFont(font) self.PasswordInput.setStyleSheet("background-color: rgb(255, 255, 255);") self.PasswordInput.setText("") self.PasswordInput.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter) self.PasswordInput.setObjectName("PasswordInput") self.formLayout_2.setWidget(1, QtWidgets.QFormLayout.FieldRole, self.PasswordInput) self.label = QtWidgets.QLabel(self.centralwidget) font = QtGui.QFont() font.setPointSize(8) font.setItalic(True) self.label.setFont(font) self.label.setAlignment(QtCore.Qt.AlignCenter) self.label.setObjectName("label") self.formLayout_2.setWidget(2, QtWidgets.QFormLayout.FieldRole, self.label) spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) self.formLayout_2.setItem(3, QtWidgets.QFormLayout.FieldRole, spacerItem) self.LoginButton = QtWidgets.QPushButton(self.centralwidget) font = QtGui.QFont() font.setPointSize(10) font.setBold(True) font.setWeight(75) self.LoginButton.setFont(font) self.LoginButton.setStyleSheet("background-color: rgb(211, 211, 211);\n" "border-style: outset;\n" "border-width: 2px;\n" "border-radius: 15px;\n" "border-color: black;\n" "padding: 4px;\n" "") self.LoginButton.setObjectName("LoginButton") self.formLayout_2.setWidget(4, QtWidgets.QFormLayout.FieldRole, self.LoginButton) self.gridLayout.addLayout(self.formLayout_2, 1, 0, 1, 1) self.setCentralWidget(self.centralwidget) self.statusbar = QtWidgets.QStatusBar() self.statusbar.setObjectName("statusbar") self.setStatusBar(self.statusbar) self.retranslateUi() QtCore.QMetaObject.connectSlotsByName(self) def retranslateUi(self): _translate = QtCore.QCoreApplication.translate self.setWindowTitle(_translate("Loginscreen", "E.I.S")) self.Header.setText(_translate("Loginscreen", "Electronic Inventory System (E.I.S)")) self.NameLabel.setText(_translate("Loginscreen", "Name")) self.PasswordLabel.setText(_translate("Loginscreen", "Password")) self.label.setText(_translate("Loginscreen", "\n" "\n" "\n" "\n" "Electronic Inventory System (E.I.S)\n" "Version: 2.6\n" "Developed By: Paglia Industries\n" "Last Updated: 05/11/2022\n" "\n" "\n" "")) self.LoginButton.setText(_translate("Loginscreen", "Log In")) #------------------------------------------ #Actions #------------------------------------------ #When the Login button is clicked -> LoginClicked Function LoginButton = self.LoginButton LoginButton.clicked.connect(self.LoginClicked) #------------------------------------------ #---------------------------------- #Store Name and Password def LoginClicked(self): userInputName = self.NameInput.text() userInputPassword = self.PasswordInput.text() #Print in terminal for testing: print("The Login Button was clicked") print("Name: " + userInputName) print("Password: " + userInputPassword) #Validate Login Info if StandardUsers().get(userInputName) == userInputPassword: print('Success! You are now logged in as: ' + userInputName) #Switch from this screen to the MainMenu Screen #mainMenu() if SuperUsers().get(userInputName) == userInputPassword: print('Success! You are now logged in as: ' + userInputName) #Switch from this screen to the AdminMenu Screen #adminMenu() #Scene Swap Test: self.win = Ui_MainDisplay.Ui_MainDisplay() self.win.show() self.close() else: #Call Invalid Credentials Popup self.invalidCredentials() print('You are not registered to use this program') #---------------------------------- #----------------------------------------------------------------- #Invalid Credentails Popup: def invalidCredentials(self): msgBox = QMessageBox() msgBox.setIcon(QMessageBox.Critical) msgBox.setText("You are not registered to use this program") msgBox.setWindowTitle("Invalid Credentials") msgBox.setStandardButtons(QMessageBox.Ok) msgBox.buttonClicked.connect(msgButtonClick) returnValue = msgBox.exec() if returnValue == QMessageBox.Ok: print('OK was clicked') def msgButtonClick(i): print("Button clicked is:",i.text()) #----------------------------------------------------------------- if __name__ == "__main__": import sys app = QtWidgets.QApplication(sys.argv) ui = Ui_Loginscreen() ui.show() sys.exit(app.exec_()) RE: Help Getting Started on Scene Swapping - Extra - May-16-2022 It worked! Thanks for all the help, I really appreciate it. I Just had to change: self.win = Ui_MainDisplay.Ui_MainDisplay()To: self.win = Ui_MainDisplay()In order to get it to function properly. I have two more questions (last ones, I promise :) 1) In my AdminMenu I am trying to have it return to the LoginScreen if the Logout buttin is clicked. I have this: from LoginScreen import Ui_Loginscreen #Logout def LogoutClicked(self): #Print in terminal for testing: print("The Logout Button was clicked") #Switch from this screen to the LoginScreen #Scene Swap: self.win = Ui_Loginscreen() self.win.show() self.close()But I get: Is there a way to return to the previous screen or not do a circular import?2) This is a quick side question: I do: pyuic5 -x {The ui file.ui -> Just drag the ui file into the terminal & it will make the path} -o {output py file.py -> drag the ui file into the terminal and rename it to .py} to convert my UI file to a Py file. When it does that conversion it uses Object instead of QMainWindow. I'm wondering if there's a way/software that can convert it from Object to QMainWindow, or do you just have to do it by hand? Just wondering for future reference. Thanks. |