Не пытайтесь менять вкладки из TabContact
или TabPeronsalDetails
. Это должно быть сделано изнутри Tab
. Чтобы Tab
получил доступ к навигационным кнопкам в TabContact
и TabPeronsalDetails
, вам нужно сделать эти переменные экземпляра кнопок, т.е.
class TabContact(QWidget):
def __init__(self):
super().__init__()
self.pushButton = QPushButton("Go to next")
vbox = QVBoxLayout()
vbox.addWidget(self.pushButton)
self.setLayout(vbox)
class TabPeronsalDetails(QWidget):
def __init__(self):
super().__init__()
self.pushButton_2 = QPushButton("Go to prior")
vbox = QVBoxLayout()
vbox.addWidget(self.pushButton_2)
self.setLayout(vbox)
В Tab
, затем вы можете подключить соответствующий слот на clicked
сигналы кнопок, выполнив что-то вроде
class Tab(QDialog):
def __init__(self):
super().__init__()
vbox = QVBoxLayout()
self.tabWidget = QTabWidget()
contact = TabContact()
personal_details = TabPeronsalDetails()
self.tabWidget.addTab(contact, "Contact Details")
self.tabWidget.addTab(personal_details, "Personal Details")
vbox.addWidget(self.tabWidget)
self.setLayout(vbox)
# connect slots to signals
contact.pushButton.clicked.connect(self.next_tab)
personal_details.pushButton_2.clicked.connect(self.prev_tab)
def next_tab(self):
cur_index = self.tabWidget.currentIndex()
if cur_index < len(self.tabWidget)-1:
self.tabWidget.setCurrentIndex(cur_index+1)
def prev_tab(self):
cur_index = self.tabWidget.currentIndex()
if cur_index > 0:
self.tabWidget.setCurrentIndex(cur_index-1)