【问题标题】:Add Icon to Tab (QTabWidget)?将图标添加到选项卡(QTabWidget)?
【发布时间】:2019-08-01 09:06:20
【问题描述】:

我正在使用带有三个选项卡的 QTabWidget。选项卡之一是关于信息/帮助。所以我想使用问号(.png)的图片而不是文本“帮助”。这可能吗?我正在使用 Python/PyQt,我只能找到 C++ 的解决方案

【问题讨论】:

    标签: python pyqt icons qtabwidget


    【解决方案1】:

    int QTabWidget::addTab(QWidget *page, const QIcon &icon, const QString &label)

    将具有给定页面、图标和标签的选项卡添加到选项卡小部件,并返回选项卡在选项卡栏中的索引。页面的所有权被传递给 QTabWidget。


    void QTabWidget::setTabIcon(int index, const QIcon &icon)

    在索引位置设置标签的图标。

    import sys
    from PyQt5 import QtCore, QtGui, QtWidgets
    
    class Window(QtWidgets.QMainWindow):
        def __init__(self, parent=None):
            super(Window, self).__init__(parent)
            
            self.qtabwidget = QtWidgets.QTabWidget(self) 
            
            widget  = QtWidgets.QPlainTextEdit("QPlainTextEdit 1")
            label   = 'Tab &1'
            widget2 = QtWidgets.QPlainTextEdit("QPlainTextEdit 2")
            
            tab_index1 = self.qtabwidget.addTab(widget, label)
            
            tab_index2 = self.qtabwidget.addTab(widget2, 'Tab &2')
            self.qtabwidget.setTabIcon(tab_index2, QtGui.QIcon('im.png'))                # <---  
            self.qtabwidget.setIconSize(QtCore.QSize(32, 32)) 
            
            self.qtabwidget.addTab(
                    QtWidgets.QLabel("QLabel Tab &3", alignment=QtCore.Qt.AlignCenter), 
                    QtGui.QIcon('Ok.png'),                                               # < ---
                    'Tab &3')
            
            self.qtabwidget.addTab(None, "No Widget")
            
            self.qtabwidget.setTabsClosable(True)  
            self.qtabwidget.tabCloseRequested.connect(self.qtabwidget_tabcloserequested)
            self.qtabwidget.setTabShape(QtWidgets.QTabWidget.Triangular)
            self.qtabwidget.setTabPosition(QtWidgets.QTabWidget.East)  
            self.qtabwidget.setTabEnabled(0, False)         # disable tab
            self.qtabwidget.setTabEnabled(1, True)          # enable tab
            self.qtabwidget.currentChanged.connect(self.qtabwidget_currentchanged)
           
            self.setCentralWidget(self.qtabwidget)
    
        @QtCore.pyqtSlot(int)
        def qtabwidget_tabcloserequested(self, index):
            # gets the widget
            widget = self.qtabwidget.widget(index)
            # if the widget exists
            if widget:
                widget.deleteLater()
            # removes the tab of the QTabWidget
            self.qtabwidget.removeTab(index)
            
        @QtCore.pyqtSlot(int)
        def qtabwidget_currentchanged(self, index):
            print(f"\n New index of current page: {index}")
    
    
    if __name__ == '__main__':
        application = QtWidgets.QApplication(sys.argv)
        window = Window()
        window.setWindowTitle('QTabWidget')
        window.resize(400, 400)
        window.show()
        sys.exit(application.exec_())        
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多