我正在制作按钮网格。我意识到,如果创建一个行数大于80且列数大于90的网格,则程序将崩溃。我所谓的“崩溃”是指程序窗口打开一秒钟,然后再次关闭。更奇怪的是,我在命令提示符下没有收到任何错误消息。
有人知道为什么会这样吗?
self.midColLayout = QVBoxLayout()
self.graphWidget = QWidget(self)
self.graphWidget.setStyleSheet("background-color: white; padding:0px;")
self.graphWidget.setSizePolicy(QSizePolicy.Ignored, QSizePolicy.Ignored)
self.vLayout = QVBoxLayout()
self.hLayout = QHBoxLayout()
self.gridLayout = QGridLayout()
self.gridLayout.setSpacing(0)
self.hLayout.addLayout(self.gridLayout)
self.vLayout.addLayout(self.hLayout)
self.buttons = []
for x in range(0, 80): # If I put 81, then the program crashes
l = []
for y in range(0, 90): # If I put 91, then the program crashes
self.button = QPushButton()
l.append(self.button)
self.gridLayout.addWidget(self.button, x, y)
self.buttons.append(l)
self.graphWidget.setLayout(self.vLayout)
self.midColLayout.addWidget(self.graphWidget)
尝试一下
import sys
from PyQt5.Qt import *
class Widget(QWidget):
def __init__(self):
super().__init__()
self.midColLayout = QVBoxLayout()
self.graphWidget = QWidget(self) ## self
self.graphWidget.setStyleSheet("background-color: white; padding:0px;")
self.graphWidget.setSizePolicy(QSizePolicy.Ignored, QSizePolicy.Ignored)
self.vLayout = QVBoxLayout()
self.hLayout = QHBoxLayout()
self.gridLayout = QGridLayout()
self.gridLayout.setSpacing(0)
self.hLayout.addLayout(self.gridLayout)
self.vLayout.addLayout(self.hLayout)
self.buttons = []
for x in range(0, 80): # If I put 81, then the program crashes
l = []
for y in range(0, 90): # If I put 91, then the program crashes
self.button = QPushButton()
l.append(self.button)
self.gridLayout.addWidget(self.button, x, y)
self.buttons.append(l)
self.graphWidget.setLayout(self.vLayout)
#? self.midColLayout.addWidget(self.mapLabel)
self.midColLayout.addWidget(self.graphWidget)
if __name__ == '__main__':
myapp = QApplication(sys.argv)
mywin = Widget()
mywin.resize(400, 400)
mywin.show()
sys.exit(myapp.exec_())