diff --git a/src/python/dm/aps_beamline_tools/gui/addExperiment.py b/src/python/dm/aps_beamline_tools/gui/addExperiment.py
new file mode 100644
index 0000000000000000000000000000000000000000..afa3ebae171623cdac982ff00bab7546909c9d80
--- /dev/null
+++ b/src/python/dm/aps_beamline_tools/gui/addExperiment.py
@@ -0,0 +1,19 @@
+#!/usr/bin/env python
+
+from PyQt4.QtGui import QGridLayout, QSpacerItem, QSizePolicy, QPushButton, QWidget, \
+    QFont, QLabel, QTableWidget, QTableWidgetItem, QColor, QAbstractItemView
+from PyQt4.QtCore import Qt
+from dmApiFactory import DmApiFactory
+
+# Define the experiments tab content:
+class AddExperimentTab(QWidget):
+    def __init__(self, stationName, parent, id=-1):
+        super(AddExperimentTab, self).__init__(parent)
+        self.stationName = stationName
+        self.parent = parent
+        self.experimentDsApi = DmApiFactory.getInstance().getExperimentDsApi()
+        self.addExperimentsTabLayout()
+
+    # Sets up the tab's layout, each block is a row
+    def addExperimentsTabLayout(self):
+        grid = QGridLayout()
\ No newline at end of file
diff --git a/src/python/dm/aps_beamline_tools/gui/daqsTab.py b/src/python/dm/aps_beamline_tools/gui/daqsTab.py
index 7d824749300ff7aa07b1acabe3366d80c8db48fd..d7e15e3f63929ee2c51786fea8eb7eb074370ee3 100644
--- a/src/python/dm/aps_beamline_tools/gui/daqsTab.py
+++ b/src/python/dm/aps_beamline_tools/gui/daqsTab.py
@@ -1,37 +1,86 @@
 #!/usr/bin/env python
 
-from PyQt4.QtGui import *
-from PyQt4.QtCore import *
+from PyQt4.QtGui import QGridLayout, QSpacerItem, QSizePolicy, QPushButton, QWidget, \
+    QFont, QLabel, QTableWidget, QTableWidgetItem, QColor, QAbstractItemView
+from PyQt4.QtCore import Qt
 from dmApiFactory import DmApiFactory
  
 # Define the DAQs tab content:
-class DaqsTab(QObject):
+class DaqsTab(QWidget):
     def __init__(self, stationName, parent, id=-1):
         super(DaqsTab, self).__init__(parent)
         self.stationName = stationName
+        self.parent = parent
         self.experimentDaqApi = DmApiFactory.getInstance().getExperimentDaqApi()
+        self.daqsTabLayout()
 
-        self.InsertColumn(0, 'Id')
-        self.InsertColumn(2, 'Data Directory')
-        self.InsertColumn(3, '# Files')
+    def daqsTabLayout(self):
+        grid = QGridLayout()
 
-        self.SetColumnWidth(0, 150)
-        self.SetColumnWidth(1, 350)
-        self.SetColumnWidth(2, 250)
+        labelFont = QFont('Arial', 18, QFont.Bold)
+        lbl = QLabel(self.stationName + ' DAQs List', self)
+        lbl.setAlignment(Qt.AlignCenter)
+        lbl.setFont(labelFont)
+        grid.addWidget(lbl, 1, 1, 1, 3)
 
+        # lambda allows the passing of variables
+        backBtn = QPushButton('Back', self)
+        backBtn.clicked.connect(lambda: self.setTab(0))
+        backBtn.setMaximumWidth(100)
+        grid.addWidget(backBtn, 2, 3)
+
+        grid.addItem(QSpacerItem(20, 30, QSizePolicy.Expanding), 3, 1)
+
+        grid.addItem(QSpacerItem(40, 20, QSizePolicy.Expanding), 4, 1)
+        self.tableWidget = QTableWidget()
+        self.tableWidget.setFixedWidth(600)
         self.updateList()
+        grid.addWidget(self.tableWidget, 4, 2)
+        grid.addItem(QSpacerItem(40, 20, QSizePolicy.Expanding), 4, 3)
+
+        addBtn = QPushButton('Start New', self)
+        addBtn.clicked.connect(lambda: self.setTab(0))
+        addBtn.setFixedWidth(250)
+        grid.addWidget(addBtn, 5, 2, Qt.AlignLeft)
+        modBtn = QPushButton('Stop Selected', self)
+        modBtn.clicked.connect(lambda: self.setTab(0))
+        modBtn.setFixedWidth(250)
+        grid.addWidget(modBtn, 5, 2, Qt.AlignRight)
+
+        grid.addItem(QSpacerItem(20, 40, QSizePolicy.Expanding), 6, 1)
+
+        self.daqsTabWidget = QWidget()
+        self.daqsTabWidget.setLayout(grid)
 
     def updateList(self):
         self.daqList = self.experimentDaqApi.listDaqs()
+        self.tableWidget.setRowCount(len(self.daqList))
+        self.tableWidget.setColumnCount(3)
+        self.tableWidget.setColumnWidth(1, 348)
+        self.tableWidget.setColumnWidth(2, 150)
+        self.tableWidget.setEditTriggers(QAbstractItemView.NoEditTriggers)
+        self.tableWidget.setHorizontalHeaderLabels('ID;Data Directory;Number of Files;'.split(';'))
+        self.tableWidget.cellDoubleClicked.connect(self.expandRow)
 
         i = 0
         for daq in self.daqList:
-            self.InsertStringItem(i, daq.get('id'))
-            self.SetStringItem(i, 1, daq.get('dataDirectory', ''))
-            self.SetStringItem(i, 2, str(daq.get('nFiles', '0')))
+            rowID = QTableWidgetItem(daq.get('id'))
+            rowDataDir = QTableWidgetItem(daq.get('dataDirectory', ''))
+            rowNumFiles = QTableWidgetItem(str(daq.get('nFiles', '')))
+            self.tableWidget.setItem(i, 0, rowID)
+            self.tableWidget.setItem(i, 1, rowDataDir)
+            self.tableWidget.setItem(i, 2, rowNumFiles)
             if (i % 2) == 0:
-                self.SetItemBackgroundColour(i, '#e6f1f5')
+                rowID.setBackground(QColor.fromRgb(230, 241, 245))
+                rowDataDir.setBackground(QColor.fromRgb(230, 241, 245))
+                rowNumFiles.setBackground(QColor.fromRgb(230, 241, 245))
             i += 1
 
+    def setTab(self, tab):
+        self.parent.stackedLayout.setCurrentIndex(tab)
+
+    def expandRow(self, row, column):
+        self.tableWidget.resizeRowToContents(row)
+
 
 
diff --git a/src/python/dm/aps_beamline_tools/gui/dmStationUi.py b/src/python/dm/aps_beamline_tools/gui/dmStationUi.py
index dc53a71b549366374917a0a08097b27f4fd51d97..4b2f94e64011b4b7e24216ef92806979b8f1afde 100755
--- a/src/python/dm/aps_beamline_tools/gui/dmStationUi.py
+++ b/src/python/dm/aps_beamline_tools/gui/dmStationUi.py
@@ -14,6 +14,7 @@ from experimentsTab import ExperimentsTab
 from daqsTab import DaqsTab
 from uploadsTab import UploadsTab
 from initialTab import InitialTab
+from addExperiment import AddExperimentTab
 
 
 class DmStationUi(QMainWindow):
@@ -29,37 +30,66 @@ class DmStationUi(QMainWindow):
         self.stackedLayout = QStackedLayout()
  
         # Create the tab windows
-        initialTab = InitialTab(self.stationName, self.stackedLayout)
-        experimentsTab = ExperimentsTab(self.stationName, self.stackedLayout)
-        #daqsTab = DaqsTab(self.stationName, self.stackedLayout)
-        #uploadsTab = UploadsTab(self.stationName, self.stackedLayout)
+        self.initialTab = InitialTab(self.stationName, self)
+        self.experimentsTab = ExperimentsTab(self.stationName, self)
+        self.daqsTab = DaqsTab(self.stationName, self)
+        self.uploadsTab = UploadsTab(self.stationName, self)
+        #addExperimentTab = AddExperimentTab(self.stationName, self)
  
         # Add the windows to the stack.
-        self.stackedLayout.addWidget(initialTab)
-        self.stackedLayout.addWidget(experimentsTab)
-        #self.stackedLayout.addWidget(daqsTab)
-        #self.stackedLayout.addWidget(uploadsTab)
+        self.stackedLayout.addWidget(self.initialTab.initialTabWidget)
+        self.stackedLayout.addWidget(self.experimentsTab.experimentsTabWidget)
+        self.stackedLayout.addWidget(self.daqsTab.daqsTabWidget)
+        self.stackedLayout.addWidget(self.uploadsTab.uploadsTabWidget)
+        #self.stackedLayout.addWidget(addExperimentTab.addExperimentTabWidget)
 
         # Set a central widget to hold everything
         self.centralWidget = QWidget()
         self.centralWidget.setLayout(self.stackedLayout)
         self.setCentralWidget(self.centralWidget)
 
+        self.stackedLayout.setCurrentIndex(0)
+        self.center()
+        self.show()
+
     def __configure(self):
         self.logger = LoggingManager.getInstance().getLogger(self.__class__.__name__)
         configManager = ConfigurationManager.getInstance()
         self.stationName = configManager.getInstance().getStationName()
         if not self.stationName:
             raise ConfigurationError('DM_STATION_NAME environment variable is not defined.')
- 
+
+    # Centers window on the screen where the mouse is detected
+    def center(self):
+        frameGeo = self.frameGeometry()
+        screen = QApplication.desktop().screenNumber(QApplication.desktop().cursor().pos())
+        screenCenter = QApplication.desktop().screenGeometry(screen).center()
+        frameGeo.moveCenter(screenCenter)
+        self.move(frameGeo.topLeft())
+
+    # Calls for the table to be resized when a resize event is called
+    def resizeEvent(self, event):
+        windowSize = event.size().width()
+        currentIndex = self.getTab()
+        if currentIndex == 0:
+            return
+        elif currentIndex == 1:
+            ExperimentsTab.resizeTable(self.experimentsTab, windowSize)
+
+    def getTab(self):
+        return self.stackedLayout.currentIndex()
+
+
 if __name__ == "__main__":
-    try:
+    #try:
         app = QApplication(sys.argv)
-        DmStationUi().Show()
-        app.MainLoop()
-    except DmException, ex:
-        print >>sys.stderr, 'ERROR: %s' % ex
-        raise SystemExit(ex.getErrorCode())
-    except Exception, ex:
-        print >>sys.stderr, '%s' % ex
-        raise SystemExit(dmStatus.DM_ERROR)
+        window = DmStationUi()
+        window.show()
+        window.raise_()
+        sys.exit(app.exec_())
+    #except DmException, ex:
+    #    print >>sys.stderr, 'ERROR: %s' % ex
+    #    raise SystemExit(ex.getErrorCode())
+    #except Exception, ex:
+    #    print >>sys.stderr, '%s' % ex
+    #    raise SystemExit(dmStatus.DM_ERROR)
diff --git a/src/python/dm/aps_beamline_tools/gui/experimentsTab.py b/src/python/dm/aps_beamline_tools/gui/experimentsTab.py
index d925fbc4b25e3776ce038ae41c86e7282d3e5818..51e820fd0338b31c12fc87c0b3b80010b2dfde38 100644
--- a/src/python/dm/aps_beamline_tools/gui/experimentsTab.py
+++ b/src/python/dm/aps_beamline_tools/gui/experimentsTab.py
@@ -1,31 +1,100 @@
 #!/usr/bin/env python
 
-from PyQt4.QtGui import *
-from PyQt4.QtCore import QObject
+from PyQt4.QtGui import QGridLayout, QSpacerItem, QSizePolicy, QPushButton, QWidget, \
+    QFont, QLabel, QTableWidget, QTableWidgetItem, QColor, QAbstractItemView
+from PyQt4.QtCore import Qt
 from dmApiFactory import DmApiFactory
  
 # Define the experiments tab content:
-class ExperimentsTab(QObject):
+class ExperimentsTab(QWidget):
     def __init__(self, stationName, parent, id=-1):
         super(ExperimentsTab, self).__init__(parent)
         self.stationName = stationName
+        self.parent = parent
+        self.test = 'cat'
         self.experimentDsApi = DmApiFactory.getInstance().getExperimentDsApi()
+        self.experimentsTabLayout()
 
+    # Sets up the tab's layout, each block is a row
+    def experimentsTabLayout(self):
+        grid = QGridLayout()
 
+        labelFont = QFont('Arial', 18, QFont.Bold)
+        lbl = QLabel(self.stationName + ' DM Experiment List', self)
+        lbl.setAlignment(Qt.AlignCenter)
+        lbl.setFont(labelFont)
+        grid.addWidget(lbl, 0, 0, 1, 3)
 
+        backBtn = QPushButton('Back', self)
+        backBtn.clicked.connect(lambda: self.setTab(0))
+        backBtn.setMaximumWidth(100)
+        grid.addWidget(backBtn, 1, 2)
+
+        grid.addItem(QSpacerItem(20, 30, QSizePolicy.Expanding), 2, 0)
+
+        grid.addItem(QSpacerItem(40, 20, QSizePolicy.Expanding), 3, 0)
+        self.tableWidget = QTableWidget()
         self.updateList()
+        grid.addWidget(self.tableWidget, 3, 0, 1, 3)
+        grid.addItem(QSpacerItem(40, 20, QSizePolicy.Expanding), 3, 2)
+
+
+        addBtn = QPushButton('Add Experiment', self)
+        addBtn.clicked.connect(lambda: self.setTab(0))
+        addBtn.setFixedWidth(250)
+        grid.addWidget(addBtn, 4, 1, Qt.AlignLeft)
+        modBtn = QPushButton('Modify Selected', self)
+        modBtn.clicked.connect(lambda: self.setTab(0))
+        modBtn.setFixedWidth(250)
+        grid.addWidget(modBtn, 4, 1, Qt.AlignRight)
 
+
+        grid.addItem(QSpacerItem(20, 40, QSizePolicy.Expanding), 5, 0)
+
+        self.experimentsTabWidget = QWidget()
+        self.experimentsTabWidget.setLayout(grid)
+
+    # Sets up the table structure and fills it with data
     def updateList(self):
         self.experimentList = self.experimentDsApi.getExperimentsByStation(self.stationName)
+        self.tableWidget.setRowCount(len(self.experimentList))
+        self.tableWidget.setColumnCount(3)
+        self.colWidths = (130, 400, 209)
+        for i, size in enumerate(self.colWidths):
+            self.tableWidget.horizontalHeader().resizeSection(i, size)
+        self.tableWidget.setEditTriggers(QAbstractItemView.NoEditTriggers)
+        self.tableWidget.setHorizontalHeaderLabels('Name;Description;Start Date;'.split(';'))
+        self.tableWidget.cellDoubleClicked.connect(self.expandRow)
 
         i = 0
         for experiment in self.experimentList:
-            self.InsertStringItem(i, experiment.get('name'))
-            self.SetStringItem(i, 1, experiment.get('description', ''))
-            self.SetStringItem(i, 2, str(experiment.get('startDate', '')))
+            rowName = QTableWidgetItem(experiment.get('name'))
+            rowDescription = QTableWidgetItem(experiment.get('description', ''))
+            rowStartDate = QTableWidgetItem(str(experiment.get('startDate', '')))
+            self.tableWidget.setItem(i, 0, rowName)
+            self.tableWidget.setItem(i, 1, rowDescription)
+            self.tableWidget.setItem(i, 2, rowStartDate)
             if (i % 2) == 0:
-                self.SetItemBackgroundColour(i, '#e6f1f5')
+                rowName.setBackground(QColor.fromRgb(230, 241, 245))
+                rowDescription.setBackground(QColor.fromRgb(230, 241, 245))
+                rowStartDate.setBackground(QColor.fromRgb(230, 241, 245))
             i += 1
 
+    # Used to change between tabs
+    def setTab(self, tab):
+        self.parent.stackedLayout.setCurrentIndex(tab)
+
+    # Expands the given row to fit the size of its contents
+    def expandRow(self, row, column):
+        self.tableWidget.resizeRowToContents(row)
 
+    # Resizes the horizontal headers to fit the screen
+    def resizeTable(self, width):
+        totalWidths = sum(self.colWidths)
+        if self.tableWidget.verticalScrollBar().isVisible():
+            newSize = [column * (width - 60) / totalWidths for column in self.colWidths]
+        else:
+            newSize = [column * (width - 60) / totalWidths for column in self.colWidths]
+        for i, column in enumerate(newSize):
+            self.tableWidget.horizontalHeader().resizeSection(i, column)
 
diff --git a/src/python/dm/aps_beamline_tools/gui/initialTab.py b/src/python/dm/aps_beamline_tools/gui/initialTab.py
index 7fca1d8f632aed5f6214bdfae7d9fd7ff1c3f2b3..170b2eb3df1dd50114795b5379cb2c6080dcf6fe 100644
--- a/src/python/dm/aps_beamline_tools/gui/initialTab.py
+++ b/src/python/dm/aps_beamline_tools/gui/initialTab.py
@@ -5,32 +5,40 @@ from PyQt4.QtCore import QObject, Qt
 
 
 # Define the experiments tab content:
-class InitialTab(QObject):
+class InitialTab(QWidget):
     def __init__(self, stationName, parent, id=-1):
         super(InitialTab, self).__init__(parent)
         self.stationName = stationName
         self.parent = parent
+        self.initialTabLayout()
 
     def initialTabLayout(self):
         grid = QGridLayout()
 
-        labelFont = QFont("Arial", 18, QFont.Bold)
-        lbl = QLabel(self.stationName + " DM Tool", self)
+        labelFont = QFont('Arial', 18, QFont.Bold)
+        lbl = QLabel(self.stationName + ' DM Tool', self)
         lbl.setAlignment(Qt.AlignCenter)
         lbl.setFont(labelFont)
-        grid.addWidget(lbl, 1, 1, 1, 3)
+        grid.addWidget(lbl, 1, 1, 1, 7)
 
         grid.addItem(QSpacerItem(20, 130, QSizePolicy.Expanding), 2, 1)
 
         grid.addItem(QSpacerItem(40, 20, QSizePolicy.Expanding), 3, 1)
-        manageBtn = QPushButton("Manage Experiments", self)
-        manageBtn.clicked.connect(self.setTab(1))
+        manageBtn = QPushButton('Manage Experiments', self)
+        manageBtn.setFixedSize(160, 160)
+        manageBtn.clicked.connect(lambda: self.setTab(1))
         grid.addWidget(manageBtn, 3, 2)
         grid.addItem(QSpacerItem(40, 20, QSizePolicy.Expanding), 3, 3)
-        viewBtn = QPushButton("View Experiments", self)
-        viewBtn.clicked.connect(self.setTab(2))
+        viewBtn = QPushButton('DAQs', self)
+        viewBtn.setFixedSize(160, 160)
+        viewBtn.clicked.connect(lambda: self.setTab(2))
         grid.addWidget(viewBtn, 3, 4)
         grid.addItem(QSpacerItem(40, 20, QSizePolicy.Expanding), 3, 5)
+        viewBtn = QPushButton('Uploads', self)
+        viewBtn.setFixedSize(160, 160)
+        viewBtn.clicked.connect(lambda: self.setTab(3))
+        grid.addWidget(viewBtn, 3, 6)
+        grid.addItem(QSpacerItem(40, 20, QSizePolicy.Expanding), 3, 7)
 
         grid.addItem(QSpacerItem(20, 130, QSizePolicy.Expanding), 4, 1)
 
@@ -38,4 +46,4 @@ class InitialTab(QObject):
         self.initialTabWidget.setLayout(grid)
 
     def setTab(self, tab):
-        self.parent.setCurrentIndex(tab)
+        self.parent.stackedLayout.setCurrentIndex(tab)
diff --git a/src/python/dm/aps_beamline_tools/gui/uploadsTab.py b/src/python/dm/aps_beamline_tools/gui/uploadsTab.py
index a5654bacd9dc9da9b4358379a67b8c323673d9e7..9f164e4112cf04d221105c0e6e630909db32c265 100644
--- a/src/python/dm/aps_beamline_tools/gui/uploadsTab.py
+++ b/src/python/dm/aps_beamline_tools/gui/uploadsTab.py
@@ -1,37 +1,84 @@
 #!/usr/bin/env python
 
-from PyQt4.QtGui import *
-from PyQt4.QtCore import *
+from PyQt4.QtGui import QGridLayout, QSpacerItem, QSizePolicy, QPushButton, QWidget, \
+    QFont, QLabel, QTableWidget, QTableWidgetItem, QColor, QAbstractItemView
+from PyQt4.QtCore import Qt
 from dmApiFactory import DmApiFactory
  
 # Define the experiments tab content:
-class UploadsTab(QObject):
+class UploadsTab(QWidget):
     def __init__(self, stationName, parent, id=-1):
         super(UploadsTab, self).__init__(parent)
         self.stationName = stationName
+        self.parent = parent
         self.experimentDaqApi = DmApiFactory.getInstance().getExperimentDaqApi()
+        self.uploadTabLayout()
 
-        self.InsertColumn(0, 'Id')
-        self.InsertColumn(2, 'Data Directory')
-        self.InsertColumn(3, '# Files')
+    def uploadTabLayout(self):
+        grid = QGridLayout()
 
-        self.SetColumnWidth(0, 150)
-        self.SetColumnWidth(1, 350)
-        self.SetColumnWidth(2, 250)
+        labelFont = QFont('Arial', 18, QFont.Bold)
+        lbl = QLabel(self.stationName + ' Uploads List', self)
+        lbl.setAlignment(Qt.AlignCenter)
+        lbl.setFont(labelFont)
+        grid.addWidget(lbl, 1, 1, 1, 3)
 
+        # lambda allows the passing of variables
+        backBtn = QPushButton('Back', self)
+        backBtn.clicked.connect(lambda: self.setTab(0))
+        backBtn.setMaximumWidth(100)
+        grid.addWidget(backBtn, 2, 3)
+
+        grid.addItem(QSpacerItem(20, 30, QSizePolicy.Expanding), 3, 1)
+
+        grid.addItem(QSpacerItem(40, 20, QSizePolicy.Expanding), 4, 1)
+        self.tableWidget = QTableWidget()
+        self.tableWidget.setFixedWidth(600)
         self.updateList()
+        grid.addWidget(self.tableWidget, 4, 2)
+        grid.addItem(QSpacerItem(40, 20, QSizePolicy.Expanding), 4, 3)
+
+        addBtn = QPushButton('Start New', self)
+        addBtn.clicked.connect(lambda: self.setTab(0))
+        addBtn.setFixedWidth(250)
+        grid.addWidget(addBtn, 5, 2, Qt.AlignLeft)
+        modBtn = QPushButton('Stop Selected', self)
+        modBtn.clicked.connect(lambda: self.setTab(0))
+        modBtn.setFixedWidth(250)
+        grid.addWidget(modBtn, 5, 2, Qt.AlignRight)
+
+        grid.addItem(QSpacerItem(20, 40, QSizePolicy.Expanding), 6, 1)
+
+        self.uploadsTabWidget = QWidget()
+        self.uploadsTabWidget.setLayout(grid)
 
     def updateList(self):
         self.uploadList = self.experimentDaqApi.listUploads()
+        self.tableWidget.setRowCount(len(self.uploadList))
+        self.tableWidget.setColumnCount(3)
+        self.tableWidget.setColumnWidth(1, 348)
+        self.tableWidget.setColumnWidth(2, 150)
+        self.tableWidget.setEditTriggers(QAbstractItemView.NoEditTriggers)
+        self.tableWidget.setHorizontalHeaderLabels('ID;Data Directory;Number of Files;'.split(';'))
+        self.tableWidget.cellDoubleClicked.connect(self.expandRow)
 
         i = 0
         for upload in self.uploadList:
-            self.InsertStringItem(i, upload.get('id'))
-            self.SetStringItem(i, 1, upload.get('dataDirectory', ''))
-            self.SetStringItem(i, 2, str(upload.get('nFiles', '0')))
+            rowID = QTableWidgetItem(upload.get('id'))
+            rowDataDir = QTableWidgetItem(upload.get('dataDirectory', ''))
+            rowNumFiles = QTableWidgetItem(str(upload.get('nFiles', '')))
+            self.tableWidget.setItem(i, 0, rowID)
+            self.tableWidget.setItem(i, 1, rowDataDir)
+            self.tableWidget.setItem(i, 2, rowNumFiles)
             if (i % 2) == 0:
-                self.SetItemBackgroundColour(i, '#e6f1f5')
+                rowID.setBackground(QColor.fromRgb(230, 241, 245))
+                rowDataDir.setBackground(QColor.fromRgb(230, 241, 245))
+                rowNumFiles.setBackground(QColor.fromRgb(230, 241, 245))
             i += 1
 
+    def setTab(self, tab):
+        self.parent.stackedLayout.setCurrentIndex(tab)
 
+    def expandRow(self, row, column):
+        self.tableWidget.resizeRowToContents(row)