为了账号安全,请及时绑定邮箱和手机立即绑定

PyQt5 在每个选项卡旁边添加添加和删除小部件按钮

PyQt5 在每个选项卡旁边添加添加和删除小部件按钮

白衣染霜花 2022-06-14 16:50:20
我想在 QTabWidget 的选项卡中添加按钮。我的第一直觉是尝试获取每个选项卡的位置,然后在选项卡顶部添加按钮,但我不知道如何获取选项卡的位置!只有整个选项卡小部件。我环顾四周,现在我认为我应该做的是制作一个自定义 TabBar 类,我可以在每个选项卡上放置按钮,就像标准 Qt 关闭按钮一样。任何人都可以向我发送正确的方向吗?
查看完整描述

1 回答

?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

好的,所以我发现了如何让它像我想要的那样工作。这实际上很简单,我制作了一个具有水平布局和两个按钮的 QWidget 类,并将其传递给 setTabButton 函数。对于任何有兴趣的人,请参阅下面的代码。


import sys

from PyQt5 import QtWidgets

from PyQt5.QtWidgets import QApplication, QMainWindow



class TabExample(QMainWindow):

    def __init__(self):

        super(TabExample, self).__init__()

        self.setWindowTitle("Tab example")


        # Create widgets

        self.tab_widget = QtWidgets.QTabWidget()

        self.setCentralWidget(self.tab_widget)


        # Label's to fill widget

        self.label1 = QtWidgets.QLabel("Tab 1")

        self.label2 = QtWidgets.QLabel("Tab 2")


        # Adding tab's

        self.tab_widget.addTab(self.label1, "Tab 1")

        self.tab_widget.addTab(self.label2, "Tab 2")


        # Tab button's

        self.right = self.tab_widget.tabBar().RightSide

        self.tab_widget.tabBar().setTabButton(0, self.right, TabButtonWidget())

        self.tab_widget.tabBar().setTabButton(1, self.right, TabButtonWidget())


        # Tab settings

        self.tab_widget.tabBar().setMovable(True)


        self.show()



class TabButtonWidget(QtWidgets.QWidget):

    def __init__(self):

        super(TabButtonWidget, self).__init__()

        # Create button's

        self.button_add = QtWidgets.QPushButton("+")

        self.button_remove = QtWidgets.QPushButton("-")


        # Set button size

        self.button_add.setFixedSize(16, 16)

        self.button_remove.setFixedSize(16, 16)


        # Create layout

        self.layout = QtWidgets.QVBoxLayout()

        self.layout.setSpacing(0)

        self.layout.setContentsMargins(0, 0, 0, 0)


        # Add button's to layout

        self.layout.addWidget(self.button_add)

        self.layout.addWidget(self.button_remove)


        # Use layout in widget

        self.setLayout(self.layout)



if __name__ == "__main__":

    app = QApplication(sys.argv)

    gui = TabExample()

    sys.exit(app.exec_())



查看完整回答
反对 回复 2022-06-14
  • 1 回答
  • 0 关注
  • 505 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信