隐藏后显示关闭按钮(x)(qtabbar)



我正在创建一种隐藏和显示选项卡的关闭按钮的方法。我找到了一种隐藏它的方法。但是,我不知道该如何相反。

这是我隐藏关闭按钮的现有代码。使用相同的代码行,如何显示选项卡的关闭按钮?

    def disable_close_button(self):
        self.ui.tab_widget.tabBar().setTabButton(self.current_index(), QTabBar.RightSide, None)
    def enable_close_button(self):
        pass

预先感谢!

您没有隐藏按钮,而是消除了按钮。因此,在我的解决方案中,我获取按钮,然后根据需要将其隐藏或显示。

import sys
from PyQt5 import QtCore, QtWidgets
class Widget(QtWidgets.QWidget):
    def __init__(self, parent=None):
        super(Widget, self).__init__(parent)
        show_button = QtWidgets.QPushButton(
            text="show",
            clicked=self.enable_close_button
        )
        hide_button = QtWidgets.QPushButton(
            text="hide",
            clicked=self.disable_close_button 
        )
        self.tab_widget = QtWidgets.QTabWidget(tabsClosable=True)
        for i in range(4):
            label = QtWidgets.QLabel(
                text="label {}".format(i),
                alignment=QtCore.Qt.AlignCenter
            )
            self.tab_widget.addTab(label , "tab-{}".format(i))
        lay = QtWidgets.QVBoxLayout(self)
        lay.addWidget(show_button)
        lay.addWidget(hide_button)
        lay.addWidget(self.tab_widget)
    @QtCore.pyqtSlot()
    def enable_close_button(self):
        ix = self.tab_widget.currentIndex()
        button = self.tab_widget.tabBar().tabButton(ix, QtWidgets.QTabBar.RightSide)
        if button is not None: 
            button.show()
    @QtCore.pyqtSlot()
    def disable_close_button(self):
        ix = self.tab_widget.currentIndex()
        button = self.tab_widget.tabBar().tabButton(ix, QtWidgets.QTabBar.RightSide)
        if button is not None: 
            button.hide()
if __name__ == '__main__':
    app = QtWidgets.QApplication.instance()
    if app is None:
        app = QtWidgets.QApplication(sys.argv)
    app.setStyle("fusion")
    w = Widget()
    w.resize(640, 480)
    w.show()
    sys.exit(app.exec_())

相关内容

  • 没有找到相关文章

最新更新