import sys
from PyQt5.QtWidgets import QMainWindow, QApplication, QPushButton, QWidget, QAction, QTabWidget ,QVBoxLayout
from PyQt5.QtGui import QIcon
from PyQt5.QtCore import pyqtSlot

class App(QMainWindow):

    def __init__(self):
        ''' Everything is used with `self.` so it can be easily accessed in any function.
        '''
        super().__init__()
        self.title = 'PyQt5 tabs - pythonspot.com'
        self.left = 0
        self.top = 0
        self.setWindowTitle(self.title)
        self.setGeometry(self.left, self.top, 400, 400)

        self.table_widget = MyTableWidget(self)
        self.setCentralWidget(self.table_widget)

        self.modeMenu = self.menuBar().addMenu('Mode')

        self.zebraMenuEntry = QAction('Zebra')
        self.zebraMenuEntry.triggered.connect(self.close)
        self.modeMenu.addAction(self.zebraMenuEntry)

        self.oneDMenuEntry = QAction('1D Mode')
        self.oneDMenuEntry.triggered.connect(self.close)
        self.modeMenu.addAction(self.oneDMenuEntry)

        self.twoDMenuEntry = QAction('2D Mode')
        self.twoDMenuEntry.triggered.connect(self.close)
        self.modeMenu.addAction(self.twoDMenuEntry)



        self.show() # once everything is set up, show the window.





class MyTableWidget(QWidget):

    def __init__(self, parent):
        super(QWidget, self).__init__(parent)
        self.layout = QVBoxLayout(self)





        # Initialize tab screen
        self.tabs = QTabWidget()
        self.tab1 = QWidget()
        self.tab2 = QWidget()
        self.tab3 = QWidget()
        self.tabs.resize(300 ,200)

        # Add tabs
        self.tabs.addTab(self.tab1 ,"Prep Experiment Zebra")
        self.tabs.addTab(self.tab2 ,"1D Mode")
        self.tabs.addTab(self.tab3, "2D Mode")

        # Create first tab
        self.tab1.layout = QVBoxLayout(self)
        self.pushButton1 = QPushButton("PyQt5 button")
        self.tab1.layout.addWidget(self.pushButton1)
        self.tab1.setLayout(self.tab1.layout)


        # Create second tab
        self.tab2.layout = QVBoxLayout(self)
        self.tabs2 = QTabWidget()
        self.tab21 = QWidget()
        self.tabs2.addTab(self.tab21, "hello")
        self.tab2.layout.addWidget(self.tabs2)


        # Add tabs to widget
        self.layout.addWidget(self.tabs)
        self.setLayout(self.layout)

    @pyqtSlot()
    def on_click(self):
        print("\n")
        for currentQTableWidgetItem in self.tableWidget.selectedItems():
            print(currentQTableWidgetItem.row(), currentQTableWidgetItem.column(), currentQTableWidgetItem.text())

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = App()
    sys.exit(app.exec_())