class MainWindow(QtGui.QMainWindow): def __init__(self): # ... # Creating tabs and using tab widget as a Central widget self.tabs = QtGui.QTabWidget() self.tabs.TabShape(QtGui.QTabWidget.Rounded) self.tabs.addTab(BasicMode(), "Basic") # index = 0 self.tabs.addTab(BulbMode(), "Bulb") # index = 1 self.tabs.addTab(TimedMode(), "Timed") # index = 2 self.tabs.addTab(ViewerMode(), "Viewer") # index = 3 self.tabs.addTab(SystemPage(), "System") # index = 4 self.tabHandler("startup") self.setCentralWidget(self.tabs) def tabHandler(self, data): print "Start managing tabs" if data == "startup": print "Managing state: StartUp" if USEFULLSCREEN != True: print "State: No Fullscreen \n Action: Removing SystemTab" self.tabs.removeTab(4) if CURRENT_REMOTETYPE != "Olympus_RM-1": print "State: No olympus \n Action: Removing ViewerTab" self.tabs.removeTab(3) if data == "settings": print "Managing state: SettingsChange" if CURRENT_REMOTETYPE != "Olympus_RM-1": print "State: No Olympus\n Action: removing ViewerTab" self.tabs.removeTab(3) if CURRENT_REMOTETYPE == "Olympus_RM-1" and USEFULLSCREEN == True: print "State: is Olympus, is Fullscreen \n Action: removing SystemTab, adding ViewerTab, adding SystemTab" self.tabs.removeTab(4) self.tabs.addTab(ViewerMode(), "Viewer") self.tabs.addTab(SystemPage(), "System") elif CURRENT_REMOTETYPE == "Olympus_RM-1" and USEFULLSCREEN != True: print "State: is Olympus, no Fullscreen \n Action: adding ViewerTab" self.tabs.addTab(ViewerMode(), "Viewer") self.tabs.update() print "Managing tabs stopped!" # ... class SettingsDialog(QtGui.QDialog): def setSettings(self): # ... MainWindow().tabHandler("settings") settings.sync() self.accept()