【发布时间】:2021-06-03 22:50:28
【问题描述】:
当单击按钮时,下面的代码会在 QTabWidget 中创建许多选项卡(来自“howmuchtab”的值)。每个选项卡都包含一个 QTextBrowser。
我想在每次单击 PushButton 时刷新选项卡。
问题是:当第二次点击“创建标签”时(以及后续...),QTextBrowser 没有被创建到第一个标签中(其他标签都可以)。
from PyQt5 import QtWidgets, QtCore
class MainWindow(QtWidgets.QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
self.button = QtWidgets.QPushButton('Create Tabs', self)
self.button.move(100, 70)
self.report_window = ReportWindow()
self.button.clicked.connect(self.analyze_clicked)
def analyze_clicked(self):
self.report_window.fill_reports()
self.report_window.show()
class ReportWindow(QtWidgets.QWidget):
def __init__(self):
super(ReportWindow, self).__init__()
self.layout = QtWidgets.QVBoxLayout(self)
self.tab = QtWidgets.QTabWidget()
self.layout.addWidget(self.tab)
self.setLayout(self.layout)
def fill_reports(self):
howmuchtabs = 5
if self.tab.count() != 0:
self.tab.clear()
for i in range(howmuchtabs):
self.create_tabs(self.tab, i + 1)
self.tb.append(f"Textbrowser in Tab #{i + 1}")
def create_tabs(self, obj, num):
tabtoadd = QtWidgets.QWidget()
obj.addTab(tabtoadd, str(num))
self.tb = QtWidgets.QTextBrowser(tabtoadd)
self.tb.setFrameShape(QtWidgets.QFrame.Box)
self.tb.setGeometry(QtCore.QRect(10, 10, 150, 30))
self.tb.setObjectName(str(num))
def main():
import sys
app = QtWidgets.QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
图片:
第一次点击
第二次点击,QTextBrowser 不会被创建到第一个选项卡中
【问题讨论】:
标签: python python-3.x pyqt5 qtabwidget qtextbrowser