Python Forum
[PyQt] [Solved]Help getting variable from Function in PyQt
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[PyQt] [Solved]Help getting variable from Function in PyQt
#1
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
                
        #------------------------------------------
Reply


Messages In This Thread
[Solved]Help getting variable from Function in PyQt - by Extra - Jun-30-2022, 12:20 AM

Possibly Related Threads…
Thread Author Replies Views Last Post
  [PyQt] [Solved]Add a SpinBox to MsgBox or Carry Variable Over? Extra 6 1,872 Jun-05-2022, 09:32 PM
Last Post: Extra
  [Tkinter] Passing variable to function. KDog 2 2,185 May-25-2021, 09:15 PM
Last Post: KDog
  return a variable from a function snakes 3 2,836 Apr-09-2021, 06:47 PM
Last Post: snakes
  Call local variable of previous function from another function with Python3 & tkinter Hannibal 5 4,497 Oct-12-2020, 09:16 PM
Last Post: deanhystad
  Global Variable in Event Function? What am I doing wrong here? p_hobbs 1 3,524 Nov-13-2019, 02:50 PM
Last Post: Denni

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020