Форум сайта python.su
reclosedevЯ извиняюсь за надоедливость и перемусоливание одной темы до некуда, но прошу вас помочь в этом вопросе Файлы проекта мне самому совершенно не разобраться
Скорее всего проблема в общей логике. Из того, что прислали не видно откуда должен появится новый кроссворд в buttonGenClick, с этим разбирайтесь сами.
Отредактировано INTJOGE (Апрель 22, 2012 13:46:40)
Офлайн
Файлы тут не при чем, вы бы объяснили, что кроссворд генерируется разный всегда и вам нужно перерисовывать. Проблема в том, что вы в createGrid создаете виджет, потом в __init__ его добавляете. Когда следующий раз вызывается createGrid, виджет создается, но не добавляется в главное окно. Создавать вид и сцену нужно один раз, а потом очищать только сцену!
def __init__(self): ... self.prepareGrid() self.createGrid() ... def prepareGrid(self): self.xxx = QtGui.QGroupBox("PREVIEW") self.scen = QtGui.QGraphicsScene(0.0, 0.0, 15*20+6, 15*20+6) self.scen.setBackgroundBrush(QtCore.Qt.white) self.view = QtGui.QGraphicsView(self.scen) layout = QtGui.QGridLayout() layout.addWidget(self.view) self.scen.setSceneRect(0, 0, 15*25+6, 15*25+6) self.view.ensureVisible(0, 0, 10, 10) self.xxx.setLayout(layout) def createGrid(self): self.scen.clear() table = self.LoadGrid('setGrid.txt') table2 = self.LoadGrid('setNumGrid.txt') for i in range(len(table)): for j in range(len(table[i])): letter = table[i][j] grid = table2[i][j] item1 = Cell(3 + i * 25, 3 + j * 25, i, j) if letter == "-": item1.setBrush(QtCore.Qt.blue) else: item1.setBrush(QtCore.Qt.white) if grid.isdigit(): item1.item2.setPlainText(grid) item1.item3.setPlainText(letter) self.scen.addItem(item1)
Отредактировано reclosedev (Апрель 22, 2012 15:54:53)
Офлайн
reclosedev
Проблема в том, что вы в createGrid создаете виджет, потом в __init__ его добавляете. Когда следующий раз вызывается createGrid, виджет создается, но не добавляется в главное окно. Создавать вид и сцену нужно один раз, а потом очищать только сцену!
Офлайн