Jun-29-2022, 10:18 PM
Never mind I got it.
I just commented out:
I just commented out:
# self.CategoryTableView = QtWidgets.QTableView(self.centralwidget) # self.CategoryTableView.setStyleSheet("background-color: rgb(255, 255, 255);") # self.CategoryTableView.setObjectName("CategoryTableView") # self.formLayout.setWidget(13, QtWidgets.QFormLayout.LabelRole, self.CategoryTableView)And moved the table to the coordinates:
self.formLayout.setWidget(14,0, self.CategoryTableView)Full code:
from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5.QtWidgets import QMessageBox import sys from PyQt5 import QtCore, QtWidgets, QtGui from PyQt5.QtSql import QSqlDatabase, QSqlTableModel from PyQt5.QtWidgets import QMessageBox, QTableView, QWidget from Constants import MainDatabase, UserDatabase, CategoryDatabase class Ui_SettingsScreen(QtWidgets.QMainWindow): def __init__(self, parent = None): super(Ui_SettingsScreen, self).__init__(parent) self.setObjectName("MainWindow") self.setFixedSize(942, 841) self.setStyleSheet("background-color: rgb(0, 170, 255);") self.centralwidget = QWidget(self) self.centralwidget.setObjectName("centralwidget") self.formLayout = QtWidgets.QFormLayout(self.centralwidget) self.formLayout.setObjectName("formLayout") self.SettingsLabel = QtWidgets.QLabel(self.centralwidget) font = QtGui.QFont() font.setPointSize(15) font.setBold(True) font.setWeight(75) self.SettingsLabel.setFont(font) self.SettingsLabel.setStyleSheet("background-color: rgb(0, 0, 0);\n" "color: rgb(255, 255, 255);\n" "\n" "border-style: outset;\n" "border-width: 2px;\n" "border-radius: 15px;\n" "border-color: black;\n" "padding: 4px;") self.SettingsLabel.setAlignment(QtCore.Qt.AlignCenter) self.SettingsLabel.setObjectName("SettingsLabel") self.formLayout.setWidget(0, QtWidgets.QFormLayout.SpanningRole, self.SettingsLabel) spacerItem = QtWidgets.QSpacerItem(20, 10, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) self.formLayout.setItem(1, QtWidgets.QFormLayout.LabelRole, spacerItem) self.DataBaseLabel = QtWidgets.QLabel(self.centralwidget) font = QtGui.QFont() font.setPointSize(12) font.setBold(True) font.setItalic(False) font.setWeight(75) self.DataBaseLabel.setFont(font) self.DataBaseLabel.setAlignment(QtCore.Qt.AlignCenter) self.DataBaseLabel.setObjectName("DataBaseLabel") self.formLayout.setWidget(5, QtWidgets.QFormLayout.LabelRole, self.DataBaseLabel) self.DataBaseComboBox = QtWidgets.QComboBox(self.centralwidget) self.DataBaseComboBox.setStyleSheet("background-color: rgb(255, 255, 255);") self.DataBaseComboBox.setObjectName("DataBaseComboBox") self.formLayout.setWidget(7, QtWidgets.QFormLayout.LabelRole, self.DataBaseComboBox) self.LowQuantityLabel = QtWidgets.QLabel(self.centralwidget) font = QtGui.QFont() font.setPointSize(12) font.setBold(True) font.setWeight(75) self.LowQuantityLabel.setFont(font) self.LowQuantityLabel.setObjectName("LowQuantityLabel") self.formLayout.setWidget(8, QtWidgets.QFormLayout.LabelRole, self.LowQuantityLabel) self.LowQuantitySpinBox = QtWidgets.QSpinBox(self.centralwidget) self.LowQuantitySpinBox.setStyleSheet("background-color: rgb(255, 255, 255);") self.LowQuantitySpinBox.setObjectName("LowQuantitySpinBox") self.formLayout.setWidget(9, QtWidgets.QFormLayout.LabelRole, self.LowQuantitySpinBox) self.LowQuantityCategoryComboBox = QtWidgets.QComboBox(self.centralwidget) self.LowQuantityCategoryComboBox.setStyleSheet("background-color: rgb(255, 255, 255);") self.LowQuantityCategoryComboBox.setObjectName("LowQuantityCategoryComboBox") self.formLayout.setWidget(10, QtWidgets.QFormLayout.LabelRole, self.LowQuantityCategoryComboBox) self.CategoryListLabel = QtWidgets.QLabel(self.centralwidget) font = QtGui.QFont() font.setPointSize(12) font.setBold(True) font.setWeight(75) self.CategoryListLabel.setFont(font) self.CategoryListLabel.setAlignment(QtCore.Qt.AlignCenter) self.CategoryListLabel.setObjectName("CategoryListLabel") self.formLayout.setWidget(12, QtWidgets.QFormLayout.LabelRole, self.CategoryListLabel) # self.CategoryTableView = QtWidgets.QTableView(self.centralwidget) # self.CategoryTableView.setStyleSheet("background-color: rgb(255, 255, 255);") # self.CategoryTableView.setObjectName("CategoryTableView") # self.formLayout.setWidget(13, QtWidgets.QFormLayout.LabelRole, self.CategoryTableView) self.SaveButton = QtWidgets.QPushButton(self.centralwidget) font = QtGui.QFont() font.setPointSize(12) font.setBold(True) font.setWeight(75) self.SaveButton.setFont(font) self.SaveButton.setStyleSheet("background-color: rgb(225, 225, 225);\n" "border-style: outset;\n" "border-width: 2px;\n" "border-color: black;\n" "padding: 4px;") self.SaveButton.setObjectName("SaveButton") self.formLayout.setWidget(15, QtWidgets.QFormLayout.LabelRole, self.SaveButton) spacerItem1 = QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) self.formLayout.setItem(16, QtWidgets.QFormLayout.LabelRole, spacerItem1) self.RegisterUserLabel = QtWidgets.QLabel(self.centralwidget) font = QtGui.QFont() font.setPointSize(15) font.setBold(True) font.setUnderline(False) font.setWeight(75) font.setStrikeOut(False) self.RegisterUserLabel.setFont(font) self.RegisterUserLabel.setStyleSheet("background-color: rgb(0, 0, 0);\n" "color: rgb(255, 255, 255);\n" "\n" "border-style: outset;\n" "border-width: 2px;\n" "border-radius: 15px;\n" "border-color: black;\n" "padding: 4px;\n" "") self.RegisterUserLabel.setAlignment(QtCore.Qt.AlignCenter) self.RegisterUserLabel.setObjectName("RegisterUserLabel") self.formLayout.setWidget(18, QtWidgets.QFormLayout.SpanningRole, self.RegisterUserLabel) spacerItem2 = QtWidgets.QSpacerItem(20, 10, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) self.formLayout.setItem(19, QtWidgets.QFormLayout.LabelRole, spacerItem2) self.NameLabel = QtWidgets.QLabel(self.centralwidget) font = QtGui.QFont() font.setPointSize(12) font.setBold(True) font.setWeight(75) self.NameLabel.setFont(font) self.NameLabel.setObjectName("NameLabel") self.formLayout.setWidget(20, QtWidgets.QFormLayout.LabelRole, self.NameLabel) self.NameInput = QtWidgets.QLineEdit(self.centralwidget) self.NameInput.setStyleSheet("background-color: rgb(255, 255, 255);") self.NameInput.setObjectName("NameInput") self.formLayout.setWidget(21, QtWidgets.QFormLayout.LabelRole, self.NameInput) self.PasswordLabel = QtWidgets.QLabel(self.centralwidget) font = QtGui.QFont() font.setPointSize(12) font.setBold(True) font.setWeight(75) self.PasswordLabel.setFont(font) self.PasswordLabel.setObjectName("PasswordLabel") self.formLayout.setWidget(22, QtWidgets.QFormLayout.LabelRole, self.PasswordLabel) self.PasswordInput = QtWidgets.QLineEdit(self.centralwidget) self.PasswordInput.setStyleSheet("background-color: rgb(255, 255, 255);") self.PasswordInput.setObjectName("PasswordInput") self.formLayout.setWidget(23, QtWidgets.QFormLayout.LabelRole, self.PasswordInput) self.PrivilegeLabel = QtWidgets.QLabel(self.centralwidget) font = QtGui.QFont() font.setPointSize(12) font.setBold(True) font.setWeight(75) self.PrivilegeLabel.setFont(font) self.PrivilegeLabel.setObjectName("PrivilegeLabel") self.formLayout.setWidget(24, QtWidgets.QFormLayout.LabelRole, self.PrivilegeLabel) self.PrivilegeComboBox = QtWidgets.QComboBox(self.centralwidget) self.PrivilegeComboBox.setStyleSheet("background-color: rgb(255, 255, 255);") self.PrivilegeComboBox.setObjectName("PrivilegeComboBox") self.formLayout.setWidget(25, QtWidgets.QFormLayout.LabelRole, self.PrivilegeComboBox) self.SubmitUserButton = QtWidgets.QPushButton(self.centralwidget) font = QtGui.QFont() font.setPointSize(12) font.setBold(True) font.setWeight(75) self.SubmitUserButton.setFont(font) self.SubmitUserButton.setStyleSheet("background-color: rgb(225, 225, 225);\n" "border-style: outset;\n" "border-width: 2px;\n" "border-color: black;\n" "padding: 4px;") self.SubmitUserButton.setObjectName("SubmitUserButton") self.formLayout.setWidget(26, QtWidgets.QFormLayout.LabelRole, self.SubmitUserButton) spacerItem3 = QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) self.formLayout.setItem(27, QtWidgets.QFormLayout.LabelRole, spacerItem3) self.MoreInfoLabel = QtWidgets.QLabel(self.centralwidget) font = QtGui.QFont() font.setPointSize(15) font.setBold(True) font.setWeight(75) self.MoreInfoLabel.setFont(font) self.MoreInfoLabel.setStyleSheet("background-color: rgb(0, 0, 0);\n" "color: rgb(255, 255, 255);\n" "\n" "border-style: outset;\n" "border-width: 2px;\n" "border-radius: 15px;\n" "border-color: black;\n" "padding: 4px;\n" "") self.MoreInfoLabel.setAlignment(QtCore.Qt.AlignCenter) self.MoreInfoLabel.setObjectName("MoreInfoLabel") self.formLayout.setWidget(28, QtWidgets.QFormLayout.SpanningRole, self.MoreInfoLabel) self.TotalValueLabel = QtWidgets.QLabel(self.centralwidget) font = QtGui.QFont() font.setPointSize(12) font.setBold(True) font.setWeight(75) self.TotalValueLabel.setFont(font) self.TotalValueLabel.setObjectName("TotalValueLabel") self.formLayout.setWidget(29, QtWidgets.QFormLayout.LabelRole, self.TotalValueLabel) self.TotalValueResultLabel = QtWidgets.QLabel(self.centralwidget) font = QtGui.QFont() font.setPointSize(12) font.setBold(True) font.setWeight(75) self.TotalValueResultLabel.setFont(font) self.TotalValueResultLabel.setStyleSheet("color: rgb(0, 150, 0);") self.TotalValueResultLabel.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter) self.TotalValueResultLabel.setObjectName("TotalValueResultLabel") self.formLayout.setWidget(29, QtWidgets.QFormLayout.FieldRole, self.TotalValueResultLabel) self.InfoLabel2 = QtWidgets.QLabel(self.centralwidget) font = QtGui.QFont() font.setItalic(True) self.InfoLabel2.setFont(font) self.InfoLabel2.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter) self.InfoLabel2.setObjectName("InfoLabel2") self.formLayout.setWidget(30, QtWidgets.QFormLayout.LabelRole, self.InfoLabel2) spacerItem4 = QtWidgets.QSpacerItem(20, 10, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) self.formLayout.setItem(31, QtWidgets.QFormLayout.LabelRole, spacerItem4) self.TotalValueMarkUpLabel = QtWidgets.QLabel(self.centralwidget) font = QtGui.QFont() font.setPointSize(12) font.setBold(True) font.setWeight(75) self.TotalValueMarkUpLabel.setFont(font) self.TotalValueMarkUpLabel.setObjectName("TotalValueMarkUpLabel") self.formLayout.setWidget(32, QtWidgets.QFormLayout.LabelRole, self.TotalValueMarkUpLabel) self.TotalValueMarkUpResultLabel = QtWidgets.QLabel(self.centralwidget) font = QtGui.QFont() font.setPointSize(12) font.setBold(True) font.setWeight(75) self.TotalValueMarkUpResultLabel.setFont(font) self.TotalValueMarkUpResultLabel.setStyleSheet("color: rgb(0, 255, 0);") self.TotalValueMarkUpResultLabel.setObjectName("TotalValueMarkUpResultLabel") self.formLayout.setWidget(32, QtWidgets.QFormLayout.FieldRole, self.TotalValueMarkUpResultLabel) self.InfoLabel3 = QtWidgets.QLabel(self.centralwidget) font = QtGui.QFont() font.setItalic(True) self.InfoLabel3.setFont(font) self.InfoLabel3.setObjectName("InfoLabel3") self.formLayout.setWidget(33, QtWidgets.QFormLayout.LabelRole, self.InfoLabel3) self.setCentralWidget(self.centralwidget) self.statusbar = QtWidgets.QStatusBar() self.statusbar.setObjectName("statusbar") self.setStatusBar(self.statusbar) self.retranslateUi() QtCore.QMetaObject.connectSlotsByName(self) #------------------------------------------ # Category Database Display #------------------------------------------ #Connect to Database self.db = QSqlDatabase.addDatabase('QSQLITE') self.db.setDatabaseName(CategoryDatabase) self.model = QSqlTableModel() self.delrow = -1 self.initializeModel() self.sbar = self.statusBar() self.CategoryTableView = QTableView() self.CategoryTableView.setStyleSheet("background-color: rgb(255, 255, 255);") self.CategoryTableView.setModel(self.model) self.CategoryTableView.clicked.connect(self.findrow) self.CategoryTableView.selectionModel().selectionChanged.connect(self.getCellText) self.formLayout.setWidget(14,0, self.CategoryTableView) #Only selects rows (Can still edit cells by double-clicking) self.CategoryTableView.setSelectionBehavior(1) # 0 Selecting single items. # 1 Selecting only rows. # 2 Selecting only columns. def initializeModel(self): self.model.setTable('Categories') self.model.setEditStrategy(QSqlTableModel.OnFieldChange) self.model.select() def findrow(self, i): self.delrow = i.row() def getCellText(self): if self.CategoryTableView.selectedIndexes(): model = self.CategoryTableView.model() row = self.selectedRow() column = 1 #Get item name (column 1) name = model.data(model.index(row, column)) #Shows the item name on the bottom left corner of the screen self.sbar.showMessage(str(name)) #Get the item Name from the currently selected row global SelectedItemName SelectedItemName = model.data(model.index(row, column)) def selectedRow(self): if self.CategoryTableView.selectionModel().hasSelection(): row = self.CategoryTableView.selectionModel().selectedIndexes()[0].row() return int(row) def selectedColumn(self): column = self.CategoryTableView.selectionModel().selectedIndexes()[0].column() return int(column) #------------------------------------------ def retranslateUi(self): _translate = QtCore.QCoreApplication.translate self.setWindowTitle(_translate("MainWindow", "Settings")) self.SettingsLabel.setText(_translate("MainWindow", "Settings")) self.DataBaseLabel.setText(_translate("MainWindow", "Database")) self.LowQuantityLabel.setText(_translate("MainWindow", "Low Quantity Value")) self.CategoryListLabel.setText(_translate("MainWindow", "Category List")) self.SaveButton.setText(_translate("MainWindow", "Save")) self.RegisterUserLabel.setText(_translate("MainWindow", "Register New User")) self.NameLabel.setText(_translate("MainWindow", "Name:")) self.PasswordLabel.setText(_translate("MainWindow", "Password:")) self.PrivilegeLabel.setText(_translate("MainWindow", "Privilege:")) self.SubmitUserButton.setText(_translate("MainWindow", "Submit User")) self.MoreInfoLabel.setText(_translate("MainWindow", "More Info")) self.TotalValueLabel.setText(_translate("MainWindow", "Total Inventory Value Without Markup:")) self.TotalValueResultLabel.setText(_translate("MainWindow", "$ ")) self.InfoLabel2.setText(_translate("MainWindow", "(Quantity*Price)")) self.TotalValueMarkUpLabel.setText(_translate("MainWindow", "Total Inventory Value With Markup:")) self.TotalValueMarkUpResultLabel.setText(_translate("MainWindow", "$ ")) self.InfoLabel3.setText(_translate("MainWindow", "(Quantity*SellPrice)")) #---------------------------------------------------------------------------------------------------- #------------------------------------------ # Database Dropdown #------------------------------------------ #Choose a database to access Databases = [MainDatabase, CategoryDatabase, UserDatabase] self.DataBaseComboBox.addItems(Databases) SelectedDatabase = self.DataBaseComboBox.currentText() if SelectedDatabase == CategoryDatabase: x = 2 #Not Yet Tested With Multiple Databases # SelectedDatabase = self.DataBaseComboBox.currentText() # SelectedDatabase = MainDatabase #------------------------------------------ #------------------------------------------ # Register New User #------------------------------------------ #Define Privilege Levels PrivilegeList = ['Admin','Standard'] self.PrivilegeComboBox.addItems(PrivilegeList) #When the Submit User button is clicked -> SubmitUserClicked Function SubmitUserButton = self.SubmitUserButton SubmitUserButton.clicked.connect(self.SubmitUserClicked) #---------------------------------- # Submit User Clicked Function #---------------------------------- def SubmitUserClicked(self): #Store the inputted values userInputName = self.NameInput.text() userInputPassword = self.PasswordInput.text() userInputPrivilege = self.PrivilegeComboBox.currentText() myList = [userInputName, userInputPassword, userInputPrivilege] if userInputName == "": self.NameLabel.setStyleSheet("color: rgb(255,0,0);") self.PasswordLabel.setStyleSheet("color: rgb(0,0,0);") elif userInputPassword == "": self.PasswordLabel.setStyleSheet("color: rgb(255,0,0);") self.NameLabel.setStyleSheet("color: rgb(0,0,0);") else: #Add the user to the users database import sqlite3 connection = sqlite3.connect(UserDatabase) cursor = connection.cursor() cursor = connection.cursor() cursor.execute(''' insert into Users (Name, Password, Privilege) values (?,?,?) ''', myList) connection.commit() connection.close() #Call User Added Popup self.UserAdded() #Clear the inputs self.NameInput.clear() self.PasswordInput.clear() #---------------------------------- # User Added Popup #---------------------------------- def UserAdded(self): msgBox = QMessageBox() msgBox.setIcon(QMessageBox.Information) msgBox.setText("The user was successfully added to the database") msgBox.setWindowTitle("User Added") msgBox.setStandardButtons(QMessageBox.Ok) returnValue = msgBox.exec() if returnValue == QMessageBox.Ok: print('The Ok button was clicked') #------------------------------------------ #---------------------------------------------------------------------------------------------------- #---------------------------------------------------------------------------------------------------- # Run this Program #---------------------------------------------------------------------------------------------------- if __name__ == "__main__": import sys app = QtWidgets.QApplication(sys.argv) ui = Ui_SettingsScreen() ui.show() sys.exit(app.exec_()) #----------------------------------------------------------------------------------------------------