2024-04-29 09:13:56 发布
网友
我想做的是动态地向QTabWidget添加选项卡,其中每个选项卡都包含一个listView、TableView或一些小部件,并将它们分配给一个模型,该模型将控制要显示的数据。选项卡的数量由另一个函数的输出数量决定,数据决定选项卡将包含的视图类型。在
现在我面临的问题是如何在执行期间动态地将视图放入选项卡中。在
您可以使用addTab动态添加页面。看看QTabWidget reference documentation。添加lists或{a3}只是创建小部件并将其添加到页面的一种情况。在
addTab
下面是一个简单的例子:
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_())
您可以使用
addTab
动态添加页面。看看QTabWidget reference documentation。添加lists或{a3}只是创建小部件并将其添加到页面的一种情况。在下面是一个简单的例子:
相关问题 更多 >
编程相关推荐