Добавление вкладки в QTabWidget при нажатии кнопки
Хотелось бы иметь возможность создавать новые вкладки в режиме реального времени.
Для этого добавила кнопку Add tab, однако при нажатии новая вкладка не добавляется.
Помимо этого, при открытии окна вкладки спокойно двигаются, а после нажатия кнопки перестают перемещаться.
Помогите, пожалуйста решить проблему.
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QHBoxLayout, QTabWidget, QPushButton
class MainWindow(QWidget):
def __init__(self):
super().__init__()
main_layout = QHBoxLayout()
self.setLayout(main_layout)
self.setGeometry(250, 250, 700, 500)
self.tab = QTabWidget(movable=True)
personal_page = QWidget(self)
contact_page = QWidget(self)
self.tab.addTab(personal_page, "tab 1")
self.tab.addTab(contact_page, "tab 2")
main_layout.addWidget(self.tab)
self.btn = QPushButton("Add tab")
self.btn.clicked.connect(self.add_tab)
main_layout.addWidget(self.btn)
def add_tab(self):
tab = QWidget(self)
self.tabWidget.addTab(tab, "tab")
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec())
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
Попробуйте так:
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QHBoxLayout, \
QTabWidget, QPushButton, QLabel
from PyQt5.QtCore import Qt
class Widget(QWidget):
def __init__(self, page):
super().__init__()
self.label = QLabel(f'Page {page}', alignment = Qt.AlignCenter)
self.label.setStyleSheet("QLabel {color: #1E5F74; font: 20pt;}")
layout = QHBoxLayout(self)
layout.addWidget(self.label)
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.tab = QTabWidget(movable=True)
personal_page = QWidget(self)
contact_page = QWidget(self)
self.tab.addTab(personal_page, "tab 1")
self.tab.addTab(contact_page, "tab 2")
self.btn = QPushButton("Add tab")
self.btn.clicked.connect(self.add_tab)
main_layout = QHBoxLayout(self)
main_layout.addWidget(self.tab)
main_layout.addWidget(self.btn)
self._page = 2
def add_tab(self):
self._page += 1
tab = Widget(self._page) # QWidget(self)
# self.tabWidget.addTab(tab, "tab") # - tabWidget
self.tab.addTab(tab, f"tab {self._page}") # +++ tab
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
window.resize(700, 500)
window.show()
sys.exit(app.exec())
