Jun-29-2022, 10:05 PM
So I got the database to display but not in the area that I want it.
How can I fix this?
Thanks in advance.
What I have right now:
How can I fix this?
Thanks in advance.
What I have right now:
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) #Coordinates should be:9,234 self.formLayout.addWidget(self.CategoryTableView) self.setCentralWidget(self.centralwidget) #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 #Make the main display, display the categories #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_()) #----------------------------------------------------------------------------------------------------