addTab
을 사용하여 페이지를 동적으로 추가 할 수 있습니다. QTabWidget reference documentation을 살펴보십시오. lists 또는 tables을 추가하는 것은 위젯을 작성하여 페이지에 추가하는 경우입니다.
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_())
탭의의 추가은 작은 부분 :
여기에 빠른 예입니다. 각 탭에 표보기 또는 목록보기가 채워 져야한다면 어떻게 할 수 있을까요? 이것이 내가 직면하고있는 진짜 문제입니다. – TheCreator232
표 또는 목록을 추가하는 과정은 동일한 과정을 거치며 위젯을 만들고 페이지에 추가하기 만하면됩니다. 내 업데이트 답변을 참조하십시오. –