I am trying to get a PySide6 QTable to populate. I can't work out if it is being populated, but just not updating since I populate the table outside of the init call, or isn't getting populated in the first place.
I have tried to use the .repaint() call to refresh the table just in case but that doesn't work either.
I've provided an excerpt of the bit of code that seems to be giving me the issue. When I run the code, you see the table fine, but for some reason just isn't populating with any data.
tblData is the object I am using to populate the Table.
Any help you can offer is really appreciated.
import Forecast
import tkinter.messagebox as msgbox
from PySide6.QtCore import *
from PySide6.QtWidgets import *
from PySide6.QtGui import *
from tkinter import *
class Widget(QWidget):
def __init__(self, parent=None):
super(Widget, self).__init__(parent)
self.tblData = None
self.lblTable = None
self.lblPipeline = None
self.cmbPipeline = None
self.btnDownWeekNo = None
self.btnUpWeekNo = None
self.lblWeekNo = None
self.sldWeekNo = None
self.lblProgress = None
self.btnRefreshFromDB = None
self.label2 = None
self.group1 = None
self.cmbMailCentre = None
self.w1 = None
self.lblFormat = None
self.cmbFormat = None
self.lblRegion = None
self.fc = Forecast.ForecastDataframes()
self.formStillLoading = True
self.gui()
self.initialise()
self.formStillLoading = False
def gui(self):
self.w1 = self
self.w1.setAutoFillBackground(True)
self.w1.setWindowTitle("Forecast Adjuster")
self.w1.resize(460, 750)
self.w1.setCursor(Qt.ArrowCursor)
self.w1.setToolTip("")
self.group1 = QGroupBox(self.w1)
self.group1.setAutoFillBackground(True)
self.group1.setTitle("Refresh From Database")
self.group1.move(20, 20)
self.group1.resize(260, 100)
self.group1.setCursor(Qt.ArrowCursor)
self.group1.setToolTip("")
self.lblProgress = QLabel(self.group1)
self.lblProgress.setText("Ready")
self.lblProgress.move(10, 30)
self.lblProgress.resize(120, 22)
self.lblProgress.setCursor(Qt.ArrowCursor)
self.lblProgress.setToolTip("")
self.lblPipeline = QLabel(self.group1)
self.lblPipeline.setText("Pipeline")
self.lblPipeline.move(10, 60)
self.lblPipeline.resize(120, 22)
self.lblPipeline.setCursor(Qt.ArrowCursor)
self.lblPipeline.setToolTip("")
self.btnRefreshFromDB = QToolButton(self.group1)
self.btnRefreshFromDB.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed)
self.btnRefreshFromDB.setText("Update")
self.btnRefreshFromDB.move(140, 30)
self.btnRefreshFromDB.resize(110, 22)
self.btnRefreshFromDB.setCursor(Qt.ArrowCursor)
self.btnRefreshFromDB.setToolTip("")
self.btnRefreshFromDB.clicked.connect(self.btnRefreshFromDB_click)
self.cmbPipeline = QComboBox(self.group1)
self.cmbPipeline.move(140, 60)
self.cmbPipeline.resize(110, 22)
self.cmbPipeline.setCursor(Qt.ArrowCursor)
self.cmbPipeline.setToolTip("")
self.cmbPipeline.currentIndexChanged.connect(self.cmbPipeline_update)
self.lblRegion = QLabel(self.w1)
self.lblRegion.setText("Choose MC")
self.lblRegion.move(20, 130)
self.lblRegion.resize(90, 22)
self.lblRegion.setCursor(Qt.ArrowCursor)
self.lblRegion.setToolTip("")
self.lblFormat = QLabel(self.w1)
self.lblFormat.setText("Choose Format")
self.lblFormat.move(20, 160)
self.lblFormat.resize(90, 22)
self.lblFormat.setCursor(Qt.ArrowCursor)
self.lblFormat.setToolTip("")
self.sldWeekNo = QSlider(self.w1)
self.sldWeekNo.setMinimum(0)
self.sldWeekNo.setMaximum(53)
self.sldWeekNo.setSingleStep(1)
self.sldWeekNo.setValue(1)
self.sldWeekNo.setOrientation(Qt.Horizontal)
self.sldWeekNo.move(20, 180)
self.sldWeekNo.resize(270, 42)
self.sldWeekNo.setCursor(Qt.ArrowCursor)
self.sldWeekNo.setToolTip("1")
self.sldWeekNo.valueChanged.connect(self.SliderWeekNo_update)
self.btnUpWeekNo = QToolButton(self.w1)
self.btnUpWeekNo.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed)
self.btnUpWeekNo.setText("Up")
self.btnUpWeekNo.move(300, 180)
self.btnUpWeekNo.resize(40, 42)
self.btnUpWeekNo.setCursor(Qt.ArrowCursor)
self.btnUpWeekNo.setToolTip("")
self.btnUpWeekNo.clicked.connect(self.btnScrollWeekNoUp_click)
self.btnDownWeekNo = QToolButton(self.w1)
self.btnDownWeekNo.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed)
self.btnDownWeekNo.setText("Down")
self.btnDownWeekNo.move(340, 180)
self.btnDownWeekNo.resize(40, 42)
self.btnDownWeekNo.setCursor(Qt.ArrowCursor)
self.btnDownWeekNo.setToolTip("")
self.btnDownWeekNo.clicked.connect(self.btnScrollWeekNoDown_click)
self.lblWeekNo = QLabel(self.w1)
self.lblWeekNo.setText("2023 W01")
self.lblWeekNo.move(390, 190)
self.lblWeekNo.resize(90, 22)
self.lblWeekNo.setCursor(Qt.ArrowCursor)
self.lblWeekNo.setToolTip("")
self.cmbMailCentre = QComboBox(self.w1)
self.cmbMailCentre.move(160, 130)
self.cmbMailCentre.resize(110, 22)
self.cmbMailCentre.setCursor(Qt.ArrowCursor)
self.cmbMailCentre.setToolTip("")
self.cmbMailCentre.currentIndexChanged.connect(self.cmbMC_update)
self.cmbFormat = QComboBox(self.w1)
self.cmbFormat.move(160, 160)
self.cmbFormat.resize(110, 22)
self.cmbFormat.setCursor(Qt.ArrowCursor)
self.cmbFormat.setToolTip("")
self.cmbFormat.currentIndexChanged.connect(self.cmbFormat_update)
self.lblTable = QLabel(self.w1)
self.lblTable.setText("Forecast vs Actuals vs Proposed")
self.lblTable.move(20, 240)
self.lblTable.resize(240, 22)
self.lblTable.setCursor(Qt.ArrowCursor)
self.lblTable.setToolTip("")
self.tblData = QTableWidget(self.w1)
self.tblData.move(20, 270)
self.tblData.resize(420, 460)
self.tblData.setCursor(Qt.ArrowCursor)
self.tblData.setToolTip("")
return self.w1
def initialise(self):
# Populate the MC Combo
dfMailCentres = self.fc.get_distinct_mcs_from_db()
listOfMCs = dfMailCentres['MailCentreName'].to_list() # Convert column to a list
listOfMCs.insert(0, 'National') # Add National to the combobox
self.cmbMailCentre.addItems(listOfMCs) # Add items in the list to the combobox
self.cmbMailCentre.setCurrentIndex(0)
# Populate the Format Combo
formats = ['Letters', 'Large Letters', 'Parcels', 'SD', 'Tracked']
self.cmbFormat.addItems(formats)
self.cmbFormat.setCurrentIndex(0)
# Populate the Pipeline Combo
pipeline = ['Delivered', 'Inward', 'Outward']
self.cmbPipeline.addItems(pipeline)
self.cmbPipeline.setCurrentIndex(0)
# Initialise Data Table
self.tblData.setColumnCount(5)
self.tblData.setHorizontalHeaderItem(0, QTableWidgetItem('MailCentre'))
self.tblData.setHorizontalHeaderItem(0, QTableWidgetItem('SummaryFormat'))
self.tblData.setHorizontalHeaderItem(0, QTableWidgetItem('YearWeek'))
self.tblData.setHorizontalHeaderItem(0, QTableWidgetItem('Actuals'))
self.tblData.setHorizontalHeaderItem(0, QTableWidgetItem('Forecast'))
self.tblData.setHorizontalHeaderLabels(['MailCentre', 'SummaryFormat', 'YearWeek', 'Actuals', 'Forecast'])
self.tblData.setItem(1, 0, QTableWidgetItem("aMC"))
self.tblData.setItem(1, 1, QTableWidgetItem("aMC"))
self.tblData.setItem(1, 2, QTableWidgetItem("aMC"))
self.tblData.setItem(1, 3, QTableWidgetItem("aMC"))
self.tblData.setItem(1, 4, QTableWidgetItem("aMC"))
self.tblData.repaint()
# Get Dataframe and Pointers Ready
self.UpdateCurrentSelectionsAndFilePointers()
self.fc.make_ready_data_to_work_on()
I have tried to populate the QTable with Data