[PyQt] [Solved]Help getting variable from Function in PyQt - 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 variable from Function in PyQt (/thread-37607.html) |
[Solved]Help getting variable from Function in PyQt - Extra - Jun-30-2022 Hello, I have a combobox (Called: DatabaseComboBox) that holds a list of databases. When a database is selected I have a function that gets it's table name. The goal is to easily switch between Databases. The problem I'm having is that I don't know how to call my variable: TableName when I need to display the table. I keep getting "TableName is not defined". How do I call my TableName variable from my DisplayDatabase function to the initialize model portion of the code: #------------------------------------------ # Category Database Display #------------------------------------------ ... #Initialize Model self.model.setTable(TableName) self.model.setEditStrategy(QSqlTableModel.OnFieldChange) self.model.select() ...Thanks in advance. Code Snippet (DisplayDatabase function is at the bottom): #------------------------------------------ # Database Dropdown #------------------------------------------ #Choose a database to access Databases = [MainDatabase, CategoryDatabase, UserDatabase] self.DataBaseComboBox.addItems(Databases) # SelectedDatabase = "" # TableName = "" CurrentDatabase = self.DataBaseComboBox CurrentDatabase.currentTextChanged.connect(self.DisplayDatabase) #------------------------------------------ # Category Database Display #------------------------------------------ #Connect to Database self.db = QSqlDatabase.addDatabase('QSQLITE') self.db.setDatabaseName(SelectedDatabase) self.model = QSqlTableModel() self.delrow = -1 #Initialize Model self.model.setTable(TableName) self.model.setEditStrategy(QSqlTableModel.OnFieldChange) self.model.select() 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 cells self.CategoryTableView.setSelectionBehavior(0) # 0 Selecting single items. # 1 Selecting only rows. # 2 Selecting only columns. #---------------------------------- #Make Specific Columns Un-Editable/ReadOnly #---------------------------------- class ReadOnlyDelegate(QStyledItemDelegate): def createEditor(self, parent, option, index): print('This column is Read-Only') return delegate = ReadOnlyDelegate(self) self.CategoryTableView.setItemDelegateForColumn(0, delegate) #ID #---------------------------------- def findrow(self, i): self.delrow = i.row() def getCellText(self): if self.CategoryTableView.selectedIndexes(): model = self.CategoryTableView.model() row = self.selectedRow() column = 1 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 DisplayDatabase(self): SelectedDatabase = self.DataBaseComboBox.currentText() if SelectedDatabase == CategoryDatabase: TableName = "Categories" elif SelectedDatabase == UserDatabase: TableName = "Users" elif SelectedDatabase == MainDatabase: TableName = "Items" return TableName, SelectedDatabase #------------------------------------------ RE: Help getting variable from Function in PyQt - Axel_Erfurt - Jun-30-2022 I think you only need return TableName at the end in def DisplayDatabase(self) and then selected_table = self.DisplayDatabase() self.model.setTable(selected_table) RE: Help getting variable from Function in PyQt - Extra - Jul-04-2022 So I have this (Code Snippet): #------------------------------------------ # Database Dropdown #------------------------------------------ #Choose a database to access Databases = [MainDatabase, CategoryDatabase, UserDatabase] self.DataBaseComboBox.addItems(Databases) CurrentDatabase = self.DataBaseComboBox CurrentDatabase.currentTextChanged.connect(self.DisplayDatabase) def DisplayDatabase(self): SelectedDatabase = self.DataBaseComboBox.currentText() if SelectedDatabase == CategoryDatabase: TableName = "Categories" elif SelectedDatabase == UserDatabase: TableName = "Users" else: TableName = "" #------------------------------------------ # Category Database Display #------------------------------------------ #Connect to Database self.db = QSqlDatabase.addDatabase('QSQLITE') self.db.setDatabaseName(SelectedDatabase) self.model = QSqlTableModel() self.delrow = -1 #Initialize Model self.model.setTable(TableName) self.model.setEditStrategy(QSqlTableModel.OnFieldChange) self.model.select() 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) #-------------------------------------------------| #For Testing: | self.formLayout.addWidget(self.CategoryTableView)#| self.setCentralWidget(self.centralwidget) #| #-------------------------------------------------| #Original: # self.formLayout.setWidget(14,0, self.CategoryTableView) #Only selects cells self.CategoryTableView.setSelectionBehavior(0) # 0 Selecting single items. # 1 Selecting only rows. # 2 Selecting only columns. #---------------------------------- #Make Specific Columns Un-Editable/ReadOnly #---------------------------------- class ReadOnlyDelegate(QStyledItemDelegate): def createEditor(self, parent, option, index): print('This column is Read-Only') return delegate = ReadOnlyDelegate(self) self.CategoryTableView.setItemDelegateForColumn(0, delegate) #ID self.CategoryTableView.setItemDelegateForColumn(3, delegate) #Privilege (for users.db) #---------------------------------- def findrow(self, i): self.delrow = i.row() def getCellText(self): if self.CategoryTableView.selectedIndexes(): model = self.CategoryTableView.model() row = self.selectedRow() column = 1 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) #------------------------------------------And it techinaclly works, but when I want to switch between tables, It opens a new one instead of getting rid of the old table and replacing it with the one I want to view (I have attached a screenshot below, showing the problem). Any way I can fix this? 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, QStyledItemDelegate 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.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.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) #------------------------------------------ # Database Dropdown #------------------------------------------ #Choose a database to access Databases = [MainDatabase, CategoryDatabase, UserDatabase] self.DataBaseComboBox.addItems(Databases) # #----------------------| # #Placeholders: | # SelectedDatabase = "" #| # TableName = "" #| # #----------------------| CurrentDatabase = self.DataBaseComboBox CurrentDatabase.currentTextChanged.connect(self.DisplayDatabase) def DisplayDatabase(self): SelectedDatabase = self.DataBaseComboBox.currentText() if SelectedDatabase == CategoryDatabase: TableName = "Categories" elif SelectedDatabase == UserDatabase: TableName = "Users" else: TableName = "" #------------------------------------------ # Category Database Display #------------------------------------------ #Connect to Database self.db = QSqlDatabase.addDatabase('QSQLITE') self.db.setDatabaseName(SelectedDatabase) self.model = QSqlTableModel() self.delrow = -1 #Initialize Model self.model.setTable(TableName) self.model.setEditStrategy(QSqlTableModel.OnFieldChange) self.model.select() 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) #-------------------------------------------------| #For Testing: | self.formLayout.addWidget(self.CategoryTableView)#| self.setCentralWidget(self.centralwidget) #| #-------------------------------------------------| #Original: # self.formLayout.setWidget(14,0, self.CategoryTableView) #Only selects cells self.CategoryTableView.setSelectionBehavior(0) # 0 Selecting single items. # 1 Selecting only rows. # 2 Selecting only columns. #---------------------------------- #Make Specific Columns Un-Editable/ReadOnly #---------------------------------- class ReadOnlyDelegate(QStyledItemDelegate): def createEditor(self, parent, option, index): print('This column is Read-Only') return delegate = ReadOnlyDelegate(self) self.CategoryTableView.setItemDelegateForColumn(0, delegate) #ID self.CategoryTableView.setItemDelegateForColumn(3, delegate) #Privilege (for users.db) #---------------------------------- def findrow(self, i): self.delrow = i.row() def getCellText(self): if self.CategoryTableView.selectedIndexes(): model = self.CategoryTableView.model() row = self.selectedRow() column = 1 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 DisplayDatabase(self): # SelectedDatabase = self.DataBaseComboBox.currentText() # # if SelectedDatabase == CategoryDatabase: # # TableName = "Categories" # if SelectedDatabase == UserDatabase: # TableName = "Users" # else: # TableName = "Categories" # return TableName #------------------------------------------ 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.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)")) #---------------------------------------------------------------------------------------------------- #------------------------------------------ # 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_()) #---------------------------------------------------------------------------------------------------- RE: Help getting variable from Function in PyQt - deanhystad - Jul-05-2022 As long as DisplayDatabase() creates a table you are going to get a new table each time you open a database. What you should do is create the table at the start of the program and have DisplayDatabase() load the database information into the existing table. It should be rare that you are creating new widgets once the window is drawn. RE: Help getting variable from Function in PyQt - Extra - Jul-05-2022 How would I go about loading the database into the existing table? I know how to make new tables, but I don't know how to reuse the same one. RE: Help getting variable from Function in PyQt - deanhystad - Jul-05-2022 You know how to load data into an existing table view. You are doing it already. # Create a new table view self.CategoryTableView = QTableView() self.CategoryTableView.setStyleSheet("background-color: rgb(255, 255, 255);") self.CategoryTableView.clicked.connect(self.findrow) self.CategoryTableView.selectionModel().selectionChanged.connect(self.getCellText) # Load the data self.CategoryTableView.setModel(self.model)The purpose of the model is to update the view to reflect the data. If the model is working correctlyl, the view should automatically update when the data changes. When you modify the model data it should emit a dataChanged signal. When this happens the view will redraw itself to show the new data. RE: [Solved]Help getting variable from Function in PyQt - Extra - Jul-06-2022 Thanks for the help, I got it working! |