Как скрыть элемент при переключении вкладки в tabWidget Python QT
Как при переключении вкладки в tabWidget в зависимости от выбранной вкладки скрыть элемент (то есть выполнить действие).
Я понимаю как это работает: нужно сверять currentIndex и если он равен нужному значению, то выполнять это действие, то есть скрытие, но как это написать в коде? Используя PyQT5.
Код будет что-то вроде этого, но вот как сделать обработчик изменения вкладки?
if currentIndex == 0:
video.hide()
В доках я нашла
QtWidgets.QTabWidget.currentChanged(index)
но как его правильно применить?
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
Попробуйте так:
import sys
from PyQt5.Qt import *
class MyTableWidget(QWidget):
def __init__(self, parent=None):
super(MyTableWidget, self).__init__(parent)
self.tab1 = QWidget()
self.tab2 = QWidget()
self.tabs = QTabWidget()
self.tabs.resize(300, 200)
self.tabs.addTab(self.tab1, "Tab 1")
self.tabs.addTab(self.tab2, "Tab 2")
self.tabs.setCurrentIndex(1)
self.tabs.currentChanged.connect(self.whichTabIsSelected) # +++
self.layout = QVBoxLayout()
# Create first tab
self.tab1.layout = QVBoxLayout(self)
self.pushButton1 = QPushButton("Button")
self.pushButton1.clicked.connect(self.on_click)
self.tab1.layout.addWidget(self.pushButton1)
self.tab1.setLayout(self.tab1.layout)
# Add tabs to widget
self.layout.addWidget(self.tabs)
self.setLayout(self.layout)
@pyqtSlot(int)
def whichTabIsSelected(self, index): # ! index
print(f"index -> {index}")
if index == 0: # <---
print("Делайте что-нибудь.") #video.hide()
@pyqtSlot()
def on_click(self):
print(f"tabs.currentIndex = {self.tabs.currentIndex()}")
class App(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle('Tabbed window')
self.table_widget = MyTableWidget(self)
self.setCentralWidget(self.table_widget)
if __name__ == '__main__':
app = QApplication(sys.argv)
w = App()
w.resize(300, 200)
w.show()
sys.exit(app.exec_())
