python - 如何在 PyQt5 的选项卡小部件中添加堆叠布局?

标签 python pyqt pyqt5

我正在尝试在 QStackedLayout 的帮助下将多个表添加到 QTabWidget 的单个选项卡中。 这是我的代码:

class ui(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle('ui')

        self.generalLayout = QGridLayout()
        self._centralWidget = QWidget(self)
        self.setCentralWidget(self._centralWidget)
        self._centralWidget.setLayout(self.generalLayout)
        self.table()

    def table(self):
        self.tabs_layout = QTabWidget()
        self.stack_layout = QStackedLayout()

        self.display1 = QTableWidget()
        self.display1.setColumnCount(2)
        self.display1.setHorizontalHeaderLabels(['S. No.', 'Title'])
        self.header = self.display1.horizontalHeader()
        self.header.setSectionResizeMode(0, QHeaderView.ResizeToContents)
        self.header.setSectionResizeMode(1, QHeaderView.Stretch)

        self.display2 = QTableWidget()
        self.display2.setColumnCount(2)
        self.display2.setHorizontalHeaderLabels(['S. No.', 'Name'])
        self.header = self.display2.horizontalHeader()
        self.header.setSectionResizeMode(0, QHeaderView.ResizeToContents)
        self.header.setSectionResizeMode(1, QHeaderView.Stretch)

        self.stack_layout.addWidget(self.display1)
        self.stack_layout.addWidget(self.display2)

        self.tabs_layout.addTab(self.stack_layout,'1')
        self.generalLayout.addWidget(self.tabs_layout,0,0)

执行上述代码时出现以下错误:

Traceback (most recent call last):
  File "ui.py", line 52, in <module>
    main()
  File "ui.py", line 44, in main
    window = ui()
  File "ui.py", line 15, in __init__
    self.table()
  File "ui.py", line 38, in table
    self.tabs_layout.addTab(self.stack_layout,'1')
TypeError: arguments did not match any overloaded call:
  addTab(self, QWidget, str): argument 1 has unexpected type 'QStackedLayout'
  addTab(self, QWidget, QIcon, str): argument 1 has unexpected type 'QStackedLayout'

有什么办法可以解决这个问题吗?

最佳答案

QTabWidget.addTab 排除小部件作为其第一个参数,但您正在提供布局。要解决此问题,您可以初始化 QWidget,将其布局设置为 self.stack_layout 并将此小部件添加到 self.tabs_layout 而不是 >self.stack_layout。即在 table(self) 中,将 self.tabs_layout.addTab(self.stack_layout,'1') 替换为类似

tab = QWidget()
tab.setLayout(self.stack_layout)
self.tabs_layout.addTab(tab,'1')

关于python - 如何在 PyQt5 的选项卡小部件中添加堆叠布局?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62116166/

相关文章:

Python通过ftp发送带有随机文件名的文件

python - 比特币:在 PyQT 中解析区 block 链 API JSON

python - 如何使 QTextTable 覆盖整个文档宽度

qt - 设置 QTableWidgetItem (Qt) 的文本颜色

python - 如何在 Python + Selenium 中创建随机用户代理?

python - Django 为计算字段计算 Avg

Heroku 上的 Python 和 Node.js

python - 创建 Qt 显示

python - 将我选择的颜色附加到 QPieSeries 的每个切片

python - TypeError : PyQt4. QtCore.QVariantAnimation 表示 C++ 抽象类,无法实例化