Найти - Пользователи
Полная версия: PyQt4 Создание GUI на основе вход txt файла
Начало » GUI » PyQt4 Создание GUI на основе вход txt файла
1 2 3
INTJOGE
reclosedev
Скорее всего проблема в общей логике. Из того, что прислали не видно откуда должен появится новый кроссворд в buttonGenClick, с этим разбирайтесь сами.
Я извиняюсь за надоедливость и перемусоливание одной темы до некуда, но прошу вас помочь в этом вопросе Файлы проекта мне самому совершенно не разобраться
Возникла идея а не поможет метод os.fdopen возвращения файла или это тоже самое?

reclosedev
Файлы тут не при чем, вы бы объяснили, что кроссворд генерируется разный всегда и вам нужно перерисовывать. Проблема в том, что вы в 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)
INTJOGE
reclosedev
Проблема в том, что вы в createGrid создаете виджет, потом в __init__ его добавляете. Когда следующий раз вызывается createGrid, виджет создается, но не добавляется в главное окно. Создавать вид и сцену нужно один раз, а потом очищать только сцену!

Благодарю за объяснения, буду знать на будущее
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB