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:
Code Snippet (DisplayDatabase function is at the bottom):
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 #------------------------------------------