以下代码提供了一个可以动态添加选项卡的选项卡界面
import sys,random from PyQt4 import QtCore,QtGui class TabContainer(QtGui.QWidget): def __init__(self): super(TabContainer,self).__init__() self.next_item_is_table = False self.initUI() def initUI(self): self.setGeometry( 150,150,650,350) self.tabwidget = QtGui.QTabWidget(self) vBox = QtGui.QVBoxLayout() vBox.addWidget(self.tabwidget) self.setLayout(vBox) self.pages = [] self.add_page() self.show() def create_page(self,*contents): page = QtGui.QWidget() vBox = QtGui.QVBoxLayout() for c in contents: vBox.addWidget(c) page.setLayout(vBox) return page def create_table(self): rows,columns = random.randint(2,5),random.randint(1,5) table = QtGui.QTableWidget( rows,columns ) for r in xrange(rows): for c in xrange(columns): table.setItem( r,c,QtGui.QTableWidgetItem( str( random.randint(0,10) ) ) ) return table def create_list(self): list = QtGui.QListWidget() columns = random.randint(2,5) for c in xrange(columns): QtGui.QListWidgetItem( str( random.randint(0,10) ),list ) return list def create_new_page_button(self): btn = QtGui.QPushButton('Create a new page!') btn.clicked.connect(self.add_page) return btn def add_page(self): if self.next_item_is_table: self.pages.append( self.create_page( self.create_table(),self.create_new_page_button() ) ) self.next_item_is_table = False else: self.pages.append( self.create_page( self.create_list(),self.create_new_page_button() ) ) self.next_item_is_table = True self.tabwidget.addTab( self.pages[-1],'Page %s' % len(self.pages) ) self.tabwidget.setCurrentIndex( len(self.pages)-1 ) app = QtGui.QApplication(sys.argv) ex = TabContainer() sys.exit(app.exec_())
但我想在标签栏旁边添加一个新的标签按钮,类似于任何浏览器……
我搜索了它,但我无法找到任何添加加号按钮的方法…… TabWidget中是否有任何属性或者我是否需要在那里添加新按钮..?
上述代码的来源是:Dynamically change view of tabs in a QTabWidget (PyQt)
解决方法
您可以在选项卡栏上设置
corner-widget:
self.tabButton = QtGui.QToolButton(self) self.tabButton.setText('+') font = self.tabButton.font() font.setBold(True) self.tabButton.setFont(font) self.tabwidget.setCornerWidget(self.tabButton) self.tabButton.clicked.connect(self.add_page)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。