PyQt5 在课堂外添加和删除标签

Posted

技术标签:

【中文标题】PyQt5 在课堂外添加和删除标签【英文标题】:PyQt5 Add and remove tabs outside of class 【发布时间】:2020-01-30 01:08:13 【问题描述】:

我有一个 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】:

无论您要删除类内还是类外的选项卡都没有关系,但您必须使用 QTabWidget 对象,例如,如果您想从“App”类添加选项卡,那么你必须通过属性为“tabs”的对象“table_widget”来完成,它是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

【讨论】:

以上是关于PyQt5 在课堂外添加和删除标签的主要内容,如果未能解决你的问题,请参考以下文章

通过 pyqt5 动态添加和删除小部件

PyQt - 课堂外的标签管理

在滚动区域小部件的 PyQt5 中添加 n 列

PyQt5 - 按钮和标签应具有相同的高度

小部件未在 pyqt5 中显示标签

如何在 python 中使用 pyqt5 显示 2 个按钮和 2 个标签?