为什么要得到';在创建大量QpushButton时,使用PyQt5的Python速度慢吗?
我正在PyQt5中构建一个更大的程序。我想在滚动区域中创建大量可单击的QPushButtons按钮 据我所知,该程序迄今为止运行正常,但当按钮数量增加(大约10000到20000个字符)时,速度会非常慢 如何确保此程序生成这些按钮?我需要加载由字符分隔的文本文件作为QPushButtons,通常大约15-20KB大(有时高达50KB)。我认为,这不应该是一个大小限制为什么要得到';在创建大量QpushButton时,使用PyQt5的Python速度慢吗?,python,pyqt5,Python,Pyqt5,我正在PyQt5中构建一个更大的程序。我想在滚动区域中创建大量可单击的QPushButtons按钮 据我所知,该程序迄今为止运行正常,但当按钮数量增加(大约10000到20000个字符)时,速度会非常慢 如何确保此程序生成这些按钮?我需要加载由字符分隔的文本文件作为QPushButtons,通常大约15-20KB大(有时高达50KB)。我认为,这不应该是一个大小限制 import sys from PyQt5.QtWidgets import QApplication, QGridLayout,
import sys
from PyQt5.QtWidgets import QApplication, QGridLayout, QScrollArea, QPushButton, QVBoxLayout, QWidget
class Widget(QWidget):
def __init__(self, parent= None):
super(Widget, self).__init__()
self.setFixedHeight(200)
self.setFixedWidth(1000)
self.setGeometry(50, 100, 600, 500)
widget = QWidget()
layout = QVBoxLayout(self)
grid = QGridLayout()
gridpos = [0, 0]
number = 15000
for i in range(number):
btn = QPushButton('x')
btn.setCheckable(True)
grid.addWidget(btn, *gridpos)
gridpos[1] += 1
if gridpos[1] == 10:
gridpos[0] += 1
gridpos[1] = 0
layout.addLayout(grid)
widget.setLayout(layout)
scroll = QScrollArea()
scroll.setWidgetResizable(False)
scroll.setWidget(widget)
vLayout = QVBoxLayout(self)
vLayout.addWidget(scroll)
self.setLayout(vLayout)
if __name__ == '__main__':
app = QApplication(sys.argv)
dialog = Widget()
dialog.show()
app.exec_()
显然,大量的QpushButton是“昂贵的”,会降低程序的速度。因此,似乎没有办法立即生成10000到20000个qpushbuttons按钮
然而,有效的方法是只显示可见的按钮,并在窗口中可见时生成新按钮。出于好奇,为什么需要10000到20000个按钮?我尝试将文本可视化,其中每个字母都是按钮。然而,我通过显示按钮子集并在下一页上移动索引来解决这个问题。