Почему неправильно расположены кнопки в PyQt5?

При нажатии кнопки Start stopwatch запускается секундомер, но он находится во вкладке "Stopwatch".

Как переместить эту кнопку и её последующие опции во вкладку "Stopwatch"?

введите сюда описание изображения

Также после двух нажатий этой кнопки появляется функционал вкладки "Timer", но он тоже не работает.

введите сюда описание изображения

Я пробовал исправлять код, перемещая последовательность функций и переименовывая кнопки, но не получил должного результата.

Полный код:

from datetime import datetime, timedelta  # +++
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.Qt import *

class Ui_MainWindow(object):
def setupUi(self, MainWindow):
    MainWindow.setObjectName("MainWindow")
    MainWindow.resize(649, 168)
    MainWindow.setMinimumSize(QtCore.QSize(0, 0))
    MainWindow.setMaximumSize(QtCore.QSize(999999, 999999))
    MainWindow.setStyleSheet(
        "MainWindow\n""{\n""    background-color: rgb(37, 37, 37);\n""}")
    self.centralwidget = QtWidgets.QWidget(MainWindow)
    self.centralwidget.setMaximumSize(QtCore.QSize(99999, 999999))
    self.centralwidget.setStyleSheet("background-color: rgb(37, 37, 37)\n""")
    self.centralwidget.setObjectName("centralwidget")

    self.frame = QtWidgets.QFrame(self.centralwidget)
    self.frame.setGeometry(QtCore.QRect(0, -1, 641, 171))
    self.frame.setMinimumSize(QtCore.QSize(0, 0))
    self.frame.setMaximumSize(QtCore.QSize(99999, 999))
    self.frame.setStyleSheet(
        "MainWindow\n""{\n""    background-color:rgb(46, 46, 46)\n""}")
    self.frame.setFrameShape(QtWidgets.QFrame.NoFrame)
    self.frame.setFrameShadow(QtWidgets.QFrame.Raised)
    self.frame.setObjectName("frame")
    self.tabWidget = QtWidgets.QTabWidget(self.frame)
    self.tabWidget.setGeometry(QtCore.QRect(0, 0, 651, 161))
    self.tabWidget.setMinimumSize(QtCore.QSize(4, 0))
    font = QtGui.QFont()
    font.setFamily("Rio Glamour personal use")
    font.setPointSize(14)
    self.tabWidget.setFont(font)
    self.tabWidget.setStyleSheet(
        "QTabWidget::pane\n"
        "{\n""    border: 1px;\n"
        "    background: rgb(37, 37, 37);\n"
        "}\n""\n"
        "QTabBar::tab\n""{\n""    background: rgb(37, 37, 37);\n"
        "    color:rgb(255, 255, 255);\n""}\n""\n""\n"
        "QTabBar::tab:selected\n""{\n"
        "    background:rgb(26, 26, 26);\n"
        "    color:rgb(255, 255, 255);\n""}\n""\n"
        "QTabBar::tab:hover\n""{\n""    background:rgb(57, 57, 57);\n"
        "    color:rgb(255, 255, 255);\n""}\n""\n""")
    self.tabWidget.setObjectName("tabWidget")
    self.tab = QtWidgets.QWidget()
    font = QtGui.QFont()
    font.setPointSize(8)
    self.tab.setFont(font)
    self.tab.setObjectName("tab")
    self.label = QtWidgets.QLabel(self.tab)
    self.label.setGeometry(QtCore.QRect(-4, -8, 651, 141))
    self.label.setText("")
    self.label.setObjectName("label")
    self.tabWidget.addTab(self.tab, "")

    self.tab_2 = QtWidgets.QWidget()
    self.tab_2.setObjectName("tab_2")

    self.label_2 = QtWidgets.QLabel(self.tab_2)
    self.label_2.setGeometry(QtCore.QRect(0, 0, 661, 141))
    self.label_2.setText("")
    self.label_2.setObjectName("label_2")

    self.layout = QGridLayout(self.tab_2)
    self.layout.addWidget(self.label_2, 0, 0, 1, 5)
    self.tabWidget.addTab(self.tab_2, "")

    self.tab_3 = QtWidgets.QWidget()
    self.tab_3.setStyleSheet(
        "background-color: rgb(37, 37, 37);\n""color: rgb(255, 255, 255);")
    self.tab_3.setObjectName("tab_3")
    self.label_3 = QtWidgets.QLabel(self.tab_3)
    self.label_3.setGeometry(QtCore.QRect(10, 0, 661, 141))
    self.label_3.setText("")
    self.label_3.setObjectName("label_3")
    self.tabWidget.addTab(self.tab_3, "")
    MainWindow.setCentralWidget(self.centralwidget)

    self.layout_timer = QGridLayout(self.tab_3)  # <<<<<<<<<<<<<<<<--ERROR
    self.layout_timer.addWidget(self.label_3, 0, 0, 1, 2)

    self.retranslateUi(MainWindow)
    self.tabWidget.setCurrentIndex(2)
    QtCore.QMetaObject.connectSlotsByName(MainWindow)

def retranslateUi(self, MainWindow):
    _translate = QtCore.QCoreApplication.translate
    MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
    self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("MainWindow", "Time"))
    self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), _translate("MainWindow", "Timer"))
    self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_3), _translate("MainWindow", "Stopwatch"))


class ManinWindow(QtWidgets.QMainWindow, Ui_MainWindow):
def __init__(self):
    super().__init__()
    self.setupUi(self)   #<<<<<<<<<<<<<<<<<<<<<<---ERROR

    self.tabWidget.currentChanged.connect(self.current_index)
    self.tabWidget.setCurrentIndex(0)

    self.working_clock = QtCore.QTimer()
    self.working_clock.setInterval(1000)
    self.working_clock.timeout.connect(self.display_clock)
    self.working_clock.start()

#MAIN FUNCTIONS

def add_functions(self):
    # Часы --- tab_2
    self.label.setText(QDateTime.currentDateTime().toString('HH:mm:ss\ndd MM yyyy'))
    self.label.setFont(QtGui.QFont("Capsuula", 40))
    self.label.setStyleSheet("color: #DADDFC;")
    self.label.setAlignment(Qt.AlignHCenter)

    # Таймер --- tab_2

    self.label_2.setText("00:00:00")
    self.label_2.setAlignment(Qt.AlignHCenter)
    self.label_2.setFont(QtGui.QFont("Capsuula", 45))
    self.label_2.setStyleSheet("color: #fff;")

    self.btn_start_timer = QtWidgets.QPushButton("Start timer")
    self.btn_start_timer.setStyleSheet("color: #fff; font-size: 15px; background-color: #555;")
    self.btn_start_timer.clicked.connect(self.func_start_timer)

    self.btn_continue_timer = QtWidgets.QPushButton("Continue timer")
    self.btn_continue_timer.setStyleSheet("color: #fff; font-size: 15px; background-color: #555;")
    self.btn_continue_timer.clicked.connect(self.func_continue_timer)

    self.btn_reset_timer = QtWidgets.QPushButton("Reset timer")
    self.btn_reset_timer.setStyleSheet("color: #fff; font-size: 15px; background-color: #555;")
    self.btn_reset_timer.clicked.connect(self.func_reset_timer)

    self.startDateTime = QDateTimeEdit()
    today = QDate.currentDate()
    DATETIME_FORMAT = "yyyy-MM-dd hh:mm:ss"
    self.startDateTime.setDateRange(today, today)
    self.startDateTime.setDisplayFormat(DATETIME_FORMAT)
    self.startDateTime.setStyleSheet('background-color: #ccc; font-size: 12px;')

    self.endDateTime = QDateTimeEdit()
    self.endDateTime.setDateTime(QDateTime.currentDateTime())
    self.endDateTime.setDisplayFormat(DATETIME_FORMAT)
    self.endDateTime.setStyleSheet('background-color: #ccc; font-size: 12px;')

    startLabel = QLabel('Start', styleSheet='color: #fff; font-size: 12px;')
    startLabel.setFixedSize(30, 25)
    self.layout.addWidget(startLabel, 1, 0, 1, 1, alignment=Qt.AlignRight)
    self.layout.addWidget(self.startDateTime, 1, 1, 1, 1)
    endLabel = QLabel("End:", styleSheet='color: #fff; font-size: 12px;')
    endLabel.setFixedSize(30, 25)
    self.layout.addWidget(endLabel, 1, 2, 1, 1, alignment=Qt.AlignRight)
    self.layout.addWidget(self.endDateTime, 1, 3, 1, 1)
    self.layout.addWidget(self.btn_start_timer, 1, 4, 1, 1)

    self.layout.addWidget(self.btn_continue_timer, 2, 1, 1, 1)
    self.layout.addWidget(self.btn_reset_timer, 2, 3, 1, 1)

    self.btn_continue_timer.hide()
    self.btn_reset_timer.hide()

    self.timer = QtCore.QTimer()
    self.timer.setInterval(1000)
    self.timer.timeout.connect(self.display_time_timer)

    #Секундомер --- tab_3

    self.temp = 0
    self.label_3.setText("00:00:00")
    self.label_3.setAlignment(Qt.AlignHCenter)
    self.label_3.setFont(QtGui.QFont("Capsuula", 45))
    self.label_3.setStyleSheet("color: #fff;")

    self.btn_start = QtWidgets.QPushButton("Start stopwatch")
    self.btn_start.setStyleSheet("color: #fff; font-size: 15px; background-color: #555;")
    self.btn_start.clicked.connect(self.func_start)

    self.btn_continue = QtWidgets.QPushButton("Continue stopwatch")
    self.btn_continue.setStyleSheet("color: #fff; font-size: 15px; background-color: #555;")
    self.btn_continue.clicked.connect(self.func_continue)

    self.btn_reset = QtWidgets.QPushButton("Reset stopwatch")
    self.btn_reset.setStyleSheet("color: #fff; font-size: 15px; background-color: #555;")
    self.btn_reset.clicked.connect(self.func_reset)

    self.layout.addWidget(self.btn_start, 1, 0, 1, 2)

    self.layout.addWidget(self.btn_continue, 2, 0, 1, 1)

    self.layout.addWidget(self.btn_reset, 2, 1, 1, 1)

    self.btn_continue.hide()
    self.btn_reset.hide()

    self.timer = QtCore.QTimer()
    self.timer.setInterval(1000)

    self.timer.timeout.connect(self.display_time)

#STOPWATCH FUNCTIONS ---VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV

def func_start(self):
    if self.btn_start.text() == "Start stopwatch":
        self.timer.start()
        self.btn_start.setText("Stop stopwatch")
    else:
        self.timer.stop()
        self.btn_start.setText("Start stopwatch")
        self.btn_start.hide()
        self.btn_continue.show()
        self.btn_reset.show()

def func_reset(self):
    self.temp = 0
    self.label_3.setText("00:00:00")
    self.btn_start.setText("Start stopwatch")
    self.btn_start.show()
    self.btn_continue.hide()
    self.btn_reset.hide()

def display_time(self):
    f_temp = datetime.utcfromtimestamp(self.temp).strftime("%H:%M:%S")

    self.label_3.setText(f_temp)
    self.temp += 1


def current_index(self, index):
    if index == 0:
        self.add_functions()

def func_continue(self):
    self.timer.start()
    self.btn_start.setText('Stop stopwatch')
    self.btn_start.show()
    self.btn_continue.hide()
    self.btn_reset.hide()


    #TIMER FUNCTIONS ---VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV

def func_start_timer(self):
    if self.btn_start_timer.text() == "Start timer":
        self.timer.start()
        self.btn_start_timer.setText("Stop timer")

        start_date = self.startDateTime.dateTime()
        self.start_date_py = start_date.toPyDateTime()
        end_date = self.endDateTime.dateTime()
        self.end_date_py = end_date.toPyDateTime()

        self.d = self.end_date_py - self.start_date_py  # !!!
    else:
        self.timer.stop()
        self.btn_start_timer.setText("Start timer")
        self.btn_start_timer.hide()
        self.btn_continue_timer.show()
        self.btn_reset_timer.show()

def func_reset_timer(self):
    self.label_2.setText("00:00:00")
    self.btn_start_timer.setText("Start timer")
    self.btn_start_timer.show()
    self.btn_continue_timer.hide()
    self.btn_reset_timer.hide()

def display_time_timer(self):
    mm, ss = divmod(self.d.seconds, 60)  # !!!
    hh, mm = divmod(mm, 60)  # !!!

    self.label_2.setText(
        f'{self.d.days} d. {hh:02} h. {mm:02} min. {ss:02} sec.'
    )

    self.d = self.d - timedelta(seconds=1)  # !!!

    if self.d.days < 0:  # !!!
        self.timer.stop()

def current_index_timer(self, index):
    if index == 0:
        self.add_functions()

def func_continue_timer(self):
    if self.d.days < 0:
        return

    self.timer.start()
    self.btn_start_timer.setText('Stop timer')
    self.btn_start_timer.show()
    self.btn_continue_timer.hide()
    self.btn_reset_timer.hide()

#CLOCK FUNCTIONS---VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV

def display_clock(self):
    self.label.setText(QDateTime.currentDateTime().toString('HH:mm:ss\ndd MM yyyy'))


if __name__ == "__main__":
    import sys

    app = QtWidgets.QApplication(sys.argv)
    w = ManinWindow()
    w.show()
    sys.exit(app.exec_())

Ответы (1 шт):

Автор решения: S. Nick

Я постарался отрегулировать расположение ваших виджетов и прокомментировал код.

from datetime import datetime, timedelta  
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.Qt import *


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(649, 168)
        MainWindow.setMinimumSize(QtCore.QSize(0, 0))
        MainWindow.setMaximumSize(QtCore.QSize(999999, 999999))
        MainWindow.setStyleSheet(
            "MainWindow\n""{\n""    background-color: rgb(37, 37, 37);\n""}")
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setMaximumSize(QtCore.QSize(99999, 999999))
        self.centralwidget.setStyleSheet("background-color: rgb(37, 37, 37)\n""")
        self.centralwidget.setObjectName("centralwidget")

        self.frame = QtWidgets.QFrame(self.centralwidget)
        self.frame.setGeometry(QtCore.QRect(0, -1, 641, 171))
        self.frame.setMinimumSize(QtCore.QSize(0, 0))
        self.frame.setMaximumSize(QtCore.QSize(99999, 999))
        self.frame.setStyleSheet(
            "MainWindow\n""{\n""    background-color:rgb(46, 46, 46)\n""}")
        self.frame.setFrameShape(QtWidgets.QFrame.NoFrame)
        self.frame.setFrameShadow(QtWidgets.QFrame.Raised)
        self.frame.setObjectName("frame")
        self.tabWidget = QtWidgets.QTabWidget(self.frame)
        self.tabWidget.setGeometry(QtCore.QRect(0, 0, 651, 161))
        self.tabWidget.setMinimumSize(QtCore.QSize(4, 0))
        font = QtGui.QFont()
        font.setFamily("Rio Glamour personal use")
        font.setPointSize(14)
        self.tabWidget.setFont(font)
        self.tabWidget.setStyleSheet(
            "QTabWidget::pane\n"
            "{\n""    border: 1px;\n"
            "    background: rgb(37, 37, 37);\n"
            "}\n""\n"
            "QTabBar::tab\n""{\n""    background: rgb(37, 37, 37);\n"
            "    color:rgb(255, 255, 255);\n""}\n""\n""\n"
            "QTabBar::tab:selected\n""{\n"
            "    background:rgb(96, 26, 26);\n"
            "    color:rgb(255, 255, 255);\n""}\n""\n"
            "QTabBar::tab:hover\n""{\n""    background:rgb(57, 57, 57);\n"
            "    color:rgb(255, 255, 255);\n""}\n""\n""")
        self.tabWidget.setObjectName("tabWidget")
        
# self.tab - "Time"
        self.tab = QtWidgets.QWidget()
        font = QtGui.QFont()
        font.setPointSize(8)
        self.tab.setFont(font)
        self.tab.setObjectName("tab")
        self.label = QtWidgets.QLabel(self.tab)
        self.label.setGeometry(QtCore.QRect(-4, -8, 651, 141))
        self.label.setText("")
        self.label.setObjectName("label")
        self.tabWidget.addTab(self.tab, "")

# self.tab_2 - "Timer"
        self.tab_2 = QtWidgets.QWidget()
        self.tab_2.setObjectName("tab_2")

        self.label_2 = QtWidgets.QLabel(self.tab_2)
        self.label_2.setGeometry(QtCore.QRect(0, 0, 661, 141))
        self.label_2.setText("")
        self.label_2.setObjectName("label_2")
        
# ---->      layout -----------------> tab_2
        self.layout = QGridLayout(self.tab_2)
        self.layout.addWidget(self.label_2, 0, 0, 1, 5)
        self.tabWidget.addTab(self.tab_2, "")

# self.tab_3 - "Stopwatch"
        self.tab_3 = QtWidgets.QWidget()
        self.tab_3.setStyleSheet(
            "background-color: rgb(37, 37, 37);\n""color: rgb(255, 255, 255);")
        self.tab_3.setObjectName("tab_3")
        self.label_3 = QtWidgets.QLabel(self.tab_3)
        self.label_3.setGeometry(QtCore.QRect(10, 0, 661, 141))
        self.label_3.setText("")
        self.label_3.setObjectName("label_3")
        self.tabWidget.addTab(self.tab_3, "")
        MainWindow.setCentralWidget(self.centralwidget)

# ---->      layout_timer -----------------> tab_3
        self.layout_timer = QGridLayout(self.tab_3)                 
        self.layout_timer.addWidget(self.label_3, 0, 0, 1, 2)
        self.layout_timer.setVerticalSpacing(10)

        self.retranslateUi(MainWindow)
        self.tabWidget.setCurrentIndex(2)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("MainWindow", "Time"))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), _translate("MainWindow", "Timer"))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_3), _translate("MainWindow", "Stopwatch"))


class ManinWindow(QtWidgets.QMainWindow, Ui_MainWindow):
    def __init__(self):
        super().__init__()
        self.setupUi(self)   

        self.tabWidget.currentChanged.connect(self.current_index)
        self.tabWidget.setCurrentIndex(0)

        self.working_clock = QtCore.QTimer()
        self.working_clock.setInterval(1000)
        self.working_clock.timeout.connect(self.display_clock)
        self.working_clock.start()

# !!! +++        
        self.add_functions()                                         # !!! +++

    #MAIN FUNCTIONS
    def add_functions(self):
        # Часы --- tab
        self.label.setText(QDateTime.currentDateTime().toString('HH:mm:ss\ndd MM yyyy'))
        self.label.setFont(QtGui.QFont("Capsuula", 40))
        self.label.setStyleSheet("color: #DADDFC;")
        self.label.setAlignment(Qt.AlignHCenter)

# Таймер --- tab_2 - label_2
        self.label_2.setText("00:00:00")
        self.label_2.setAlignment(Qt.AlignHCenter)
        self.label_2.setFont(QtGui.QFont("Capsuula", 35))
        self.label_2.setStyleSheet("color: #fff;")

        self.btn_start_timer = QtWidgets.QPushButton("Start timer")
        self.btn_start_timer.setStyleSheet("color: #fff; font-size: 15px; background-color: #555;")
        self.btn_start_timer.clicked.connect(self.func_start_timer)

        self.btn_continue_timer = QtWidgets.QPushButton("Continue timer")
        self.btn_continue_timer.setStyleSheet("color: #fff; font-size: 15px; background-color: #555;")
        self.btn_continue_timer.clicked.connect(self.func_continue_timer)

        self.btn_reset_timer = QtWidgets.QPushButton("Reset timer")
        self.btn_reset_timer.setStyleSheet("color: #fff; font-size: 15px; background-color: #555;")
        self.btn_reset_timer.clicked.connect(self.func_reset_timer)

        self.startDateTime = QDateTimeEdit()
        today = QDate.currentDate()
        DATETIME_FORMAT = "yyyy-MM-dd hh:mm:ss"
        self.startDateTime.setDateRange(today, today)
        self.startDateTime.setDisplayFormat(DATETIME_FORMAT)
        self.startDateTime.setStyleSheet('background-color: #ccc; font-size: 12px;')

        self.endDateTime = QDateTimeEdit()
        self.endDateTime.setDateTime(QDateTime.currentDateTime())
        self.endDateTime.setDisplayFormat(DATETIME_FORMAT)
        self.endDateTime.setStyleSheet('background-color: #ccc; font-size: 12px;')

        startLabel = QLabel('Start', styleSheet='color: #fff; font-size: 12px;')
        startLabel.setFixedSize(30, 25)
        self.layout.addWidget(startLabel, 1, 0, 1, 1, alignment=Qt.AlignRight)
        self.layout.addWidget(self.startDateTime, 1, 1, 1, 1)
        endLabel = QLabel("End:", styleSheet='color: #fff; font-size: 12px;')
        endLabel.setFixedSize(30, 25)
        self.layout.addWidget(endLabel, 1, 2, 1, 1, alignment=Qt.AlignRight)
        self.layout.addWidget(self.endDateTime, 1, 3, 1, 1)
        self.layout.addWidget(self.btn_start_timer, 1, 4, 1, 1)

        self.layout.addWidget(self.btn_continue_timer, 2, 1, 1, 1)
        self.layout.addWidget(self.btn_reset_timer, 2, 3, 1, 1)

        self.btn_continue_timer.hide()
        self.btn_reset_timer.hide()

        self.timer = QtCore.QTimer()
        self.timer.setInterval(1000)
        self.timer.timeout.connect(self.display_time_timer)

# Секундомер --- tab_3 - label_3 
        self.temp = 0
        self.label_3.setText("00:00:00")
        self.label_3.setAlignment(Qt.AlignHCenter)
        self.label_3.setFont(QtGui.QFont("Capsuula", 40))
        self.label_3.setStyleSheet("color: #fff;")

        self.btn_start = QtWidgets.QPushButton("Start stopwatch")
        self.btn_start.setStyleSheet("color: #fff; font-size: 15px; background-color: #555;")
        self.btn_start.clicked.connect(self.func_start)

        self.btn_continue = QtWidgets.QPushButton("Continue stopwatch")
        self.btn_continue.setStyleSheet("color: #fff; font-size: 15px; background-color: #555;")
        self.btn_continue.clicked.connect(self.func_continue)

        self.btn_reset = QtWidgets.QPushButton("Reset stopwatch")
        self.btn_reset.setStyleSheet("color: #fff; font-size: 15px; background-color: #555;")
        self.btn_reset.clicked.connect(self.func_reset)

        '''  vvvvvv <---- нет
        self.layout.addWidget(self.btn_start, 1, 0, 1, 2)
        self.layout.addWidget(self.btn_continue, 2, 0, 1, 1)
        self.layout.addWidget(self.btn_reset, 2, 1, 1, 1)
        '''
# !!! +++ -> vvvvvvvvvvvv <---- да
        self.layout_timer.addWidget(self.btn_start, 1, 0, 1, 2)
        self.layout_timer.addWidget(self.btn_continue, 2, 0, 1, 1)
        self.layout_timer.addWidget(self.btn_reset, 2, 1, 1, 1)

        self.btn_continue.hide()
        self.btn_reset.hide()

#        self.timer = QtCore.QTimer()
# !!! +++ -> timer_3 <---- да
# --------->      vv
        self.timer_3 = QtCore.QTimer()
        self.timer_3.setInterval(1000)
        self.timer_3.timeout.connect(self.display_time)

    #STOPWATCH FUNCTIONS --- VVVVVVVVVVVVVVVVVVVVVVVVVV
    def func_start(self):
        if self.btn_start.text() == "Start stopwatch":
            self.timer_3.start()
            self.btn_start.setText("Stop stopwatch")
        else:
            self.timer_3.stop()
            self.btn_start.setText("Start stopwatch")
            self.btn_start.hide()
            self.btn_continue.show()
            self.btn_reset.show()

    def func_reset(self):
        self.temp = 0
        self.label_3.setText("00:00:00")
        self.btn_start.setText("Start stopwatch")
        self.btn_start.show()
        self.btn_continue.hide()
        self.btn_reset.hide()

    def display_time(self):
        f_temp = datetime.utcfromtimestamp(self.temp).strftime("%H:%M:%S")
        self.label_3.setText(f_temp)
        self.temp += 1

# !!!
    def current_index(self, index):
        pass                           # +++
        ''' пока это видимо не надо
#        if index == 0:
#            self.add_functions()
        '''

    def func_continue(self):
        self.timer_3.start()
        self.btn_start.setText('Stop stopwatch')
        self.btn_start.show()
        self.btn_continue.hide()
        self.btn_reset.hide()

# TIMER FUNCTIONS --- VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
    def func_start_timer(self):
        if self.btn_start_timer.text() == "Start timer":
            self.timer.start()
            self.btn_start_timer.setText("Stop timer")

            start_date = self.startDateTime.dateTime()
            self.start_date_py = start_date.toPyDateTime()
            end_date = self.endDateTime.dateTime()
            self.end_date_py = end_date.toPyDateTime()

            self.d = self.end_date_py - self.start_date_py  
        else:
            self.timer.stop()
            self.btn_start_timer.setText("Start timer")
            self.btn_start_timer.hide()
            self.btn_continue_timer.show()
            self.btn_reset_timer.show()

    def func_reset_timer(self):
        self.label_2.setText("00:00:00")
        self.btn_start_timer.setText("Start timer")
        self.btn_start_timer.show()
        self.btn_continue_timer.hide()
        self.btn_reset_timer.hide()

    def display_time_timer(self):
        mm, ss = divmod(self.d.seconds, 60)  
        hh, mm = divmod(mm, 60)  
        self.label_2.setText(
            f'{self.d.days} d. {hh:02} h. {mm:02} min. {ss:02} sec.'
        )
        self.d = self.d - timedelta(seconds=1)  
        if self.d.days < 0:  
            self.timer.stop()

    def current_index_timer(self, index):
        if index == 0:
            self.add_functions()

    def func_continue_timer(self):
        if self.d.days < 0:
            return

        self.timer.start()
        self.btn_start_timer.setText('Stop timer')
        self.btn_start_timer.show()
        self.btn_continue_timer.hide()
        self.btn_reset_timer.hide()

    #CLOCK FUNCTIONS---VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
    def display_clock(self):
        self.label.setText(QDateTime.currentDateTime().toString('HH:mm:ss\ndd MM yyyy'))


if __name__ == "__main__":
    import sys

    app = QtWidgets.QApplication(sys.argv)
    w = ManinWindow()
    w.show()
    sys.exit(app.exec_())

введите сюда описание изображения

введите сюда описание изображения

введите сюда описание изображения

→ Ссылка