如何使用表单上的按钮向QTabWidget添加选项卡?

时间:2017-04-29 18:39:56

标签: python pyqt pyqt5

我决定为我的剧本写一个视觉表格。 我们的想法是有一个按钮,可以为QTabWidget添加新标签。它不起作用,我找不到一个好的例子。我使用PyQt5。这是我尝试过的一部分:

import sys
from PyQt5.QtGui import QIcon
from PyQt5 import QtCore, QtWidgets

class mainForm(QtWidgets.QWidget):
    def __init__(self):
        super().__init__()
        self.runUi()

    def runUi(self):
        self.resize(250, 150)
        self.move(300, 300)
        self.setWindowTitle('Let\'s Rock!')
        self.setWindowIcon(QIcon('icon.png'))
        self.setMaximumSize(QtCore.QSize(560, 522))
        self.setMinimumSize(QtCore.QSize(560, 522))

        groupBoxGD = QtWidgets.QGroupBox('Соединение с ГД', self)
        groupBoxGD.setGeometry(QtCore.QRect(10, 10, 541, 151))

        hrLWGDLink = QtWidgets.QWidget(groupBoxGD)
        hrLWGDLink.setGeometry(QtCore.QRect(10, 10, 521, 31))
        hrLGD = QtWidgets.QHBoxLayout(hrLWGDLink)
        hrLGD.setContentsMargins(0, 0, 0, 0)

        btnAddTab = QtWidgets.QPushButton(hrLWGDLink)
        btnAddTab.setText('Add tab')
        hrLGD.addWidget(btnAddTab)

        tabWidget = QtWidgets.QTabWidget(groupBoxGD)
        tabWidget.setGeometry(QtCore.QRect(10, 170, 541, 351))
        btnAddTab.clicked.connect(self.addProjectTab)
        self.show()

    def addProjectTab(self):
        tab = QtWidgets.QWidget()
        #how add tab at this line?

if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    ui = mainForm()
    sys.exit(app.exec_())

1 个答案:

答案 0 :(得分:0)

您必须使用addTab()函数,但要从另一个类执行此操作,QTabWidget对象必须是该类的成员。此外,我在设计中做了一些更改,因为按钮位于QTabWidget上,覆盖了标签。

from PyQt5 import QtCore, QtGui, QtWidgets
import sys

class mainForm(QtWidgets.QWidget):
    def __init__(self):
        super().__init__()
        self.runUi()

    def runUi(self):
        self.resize(250, 150)
        self.move(300, 300)
        self.setWindowTitle('Let\'s Rock!')
        self.setWindowIcon(QtGui.QIcon('icon.png'))
        self.setMaximumSize(QtCore.QSize(560, 522))
        self.setMinimumSize(QtCore.QSize(560, 522))

        layout = QtWidgets.QVBoxLayout(self)

        groupBoxGD = QtWidgets.QGroupBox('Соединение с ГД', self)

        layout2 = QtWidgets.QVBoxLayout(groupBoxGD)

        hrLWGDLink = QtWidgets.QWidget(groupBoxGD)
        hrLGD = QtWidgets.QVBoxLayout(hrLWGDLink)
        hrLGD.setContentsMargins(0, 0, 0, 0)
        btnAddTab = QtWidgets.QPushButton(hrLWGDLink)
        btnAddTab.setText('Add tab')

        hrLGD.addWidget(btnAddTab)
        self.tabWidget = QtWidgets.QTabWidget(hrLWGDLink)
        hrLGD.addWidget(self.tabWidget)
        layout2.addWidget(hrLWGDLink)
        layout.addWidget(groupBoxGD)
        btnAddTab.clicked.connect(self.addProjectTab)

    def addProjectTab(self):
        tab = QtWidgets.QWidget()
        self.tabWidget.addTab(tab, "tab")

app = QtWidgets.QApplication(sys.argv)
w = mainForm()
w.show()
sys.exit(app.exec_())

截图:

enter image description here