PyQt5 Добавить и удалить вкладки за пределами класса - PullRequest
1 голос
/ 30 января 2020

У меня есть приложение Python, которое использует PyQt5 для GUI. У меня есть виджет вкладок, и я хочу добавлять и удалять вкладки вне класса окна. Что-то вроде:

Tabs.addTab("name")

Как мне это сделать?

Вот мой код:

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

class App(QMainWindow):

    def __init__(self):
        super().__init__()
        self.title = 'Test'
        self.left = 0
        self.top = 0
        self.width = 500
        self.height = 500
        self.setWindowTitle(self.title)
        self.setGeometry(self.left, self.top, self.width, self.height)

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

        self.show()

class MyTableWidget(QWidget):

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

        self.tabs = QTabWidget()
        self.tab1 = QWidget()
        self.tab2 = QWidget()
        self.tabs.resize(300,200)

        self.tabs.addTab(self.tab1, "Tab 1")
        self.tabs.addTab(self.tab2, "Tab 2")

        self.layout.addWidget(self.tabs)
        self.setLayout(self.layout)

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

Спасибо за помощь!

1 Ответ

1 голос
/ 30 января 2020

Неважно, собираетесь ли вы удалять вкладку внутри класса или вне его, но вы должны использовать объект QTabWidget, например, в вашем случае, если вы хотите добавить вкладку из класса «App», тогда Вы должны сделать это через объект "table_widget", атрибутом которого является "tabs", который является QTabWidget:

class App(QMainWindow):
    def __init__(self):
        super().__init__()
        # ...
        self.table_widget.tabs.addTab(QWidget(), "name") # <--- add tab
        self.table_widget.tabs.removeTab(0)              # <--- remove tab
...