【问题标题】:QTabWidget some tabs have a close button, and some tabs do not have a close buttonQTabWidget 有些标签有关闭按钮,有些标签没有关闭按钮
【发布时间】:2020-06-10 01:48:09
【问题描述】:

我正在创建一个 QTabWidget,并将 True 设置为它的 setTabsClosable 方法,以便每个选项卡都有一个关闭按钮。我想要的效果是第一个选项卡没有关闭按钮,第二个按钮有关闭按钮。应该怎么设置?

from PyQt4.QtGui import QTabWidget, QLabel, QHBoxLayout
import sys

import sys
from PyQt4 import QtGui


class Example(QtGui.QWidget):

    def __init__(self):
        super(Example, self).__init__()

        self.initUI()

    def create_tab(self):
        self.tab = QTabWidget()
        self.tab.tabCloseRequested.connect(self.delete)
        self.tab.setTabsClosable(True)

        self.tab.addTab(QLabel('a'), 'a')
        self.tab.addTab(QLabel('b'), 'b')

    def initUI(self):
        self.create_tab()

        h = QtGui.QHBoxLayout()
        self.setLayout(h)
        h.addWidget(self.tab)
        self.setGeometry(100, 100, 500, 500)
        self.show()

    def delete(self, index):
        self.tab.removeTab(index)


def main():
    app = QtGui.QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())


if __name__ == '__main__':
    main()

【问题讨论】:

    标签: python pyqt pyqt4 qtabwidget qtabbar


    【解决方案1】:

    一种可能的解决方案是在设置选项卡后删除按钮:

    def create_tab(self):
        self.tab = QtGui.QTabWidget()
        self.tab.tabCloseRequested.connect(self.delete)
        self.tab.setTabsClosable(True)
    
        self.tab.addTab(QtGui.QLabel("a"), "a")
        self.tab.addTab(QtGui.QLabel("b"), "b")
    
        default_side = self.tab.style().styleHint(
            QtGui.QStyle.SH_TabBar_CloseButtonPosition, None, self.tab.tabBar()
        )
        for i in (0,): # indexes of the buttons to remove
            self.tab.tabBar().setTabButton(i, default_side, None)

    【讨论】:

      猜你喜欢
      • 2017-08-21
      • 1970-01-01
      • 1970-01-01
      • 2020-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-06
      • 2021-02-18
      相关资源
      最近更新 更多