Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Не увеличивается значение переменной
Форум на CrossPlatform.RU > Разработка > Интерпретируемые языки
zuze
В приведённом коде значение frame прекрасно меняется на единицу.
Получается:
1. 1 срабатывание таймера: в File 1 существует (имя первого файла), в File 2 не существует имени файла.
2. 2 срабатывание таймера: в File 1 существует (имя первого файла), в File 2 существует (имя второго файла).
3. 3 срабатывание таймера: в File 1 существует (имя второго файла), в File 2 существует (имя третьего файла).
и так далее.

def MyTimer(self):
        global frame
        global NF
        global dir
        global bf
        global bn
        global im1
        global im2

        if frame == 669:
            frame = 0

        if self.ui.checkBox_4.isChecked():
            if frame == 0:
                os.chdir(dir)
                try:
                    fp = open(NF[frame], 'rb')
                except IOError:
                    print "Cannot open file read!"

                self.ui.lineEdit_2.setText(NF[frame])

                fp.seek(0, 2)
                size = fp.tell()
                fp.seek(size - (492*720), 0)

                for j in range(0, 720, 1):
                    bf.append([])
                    for i in range(491, -1, -1):
                        bf[j].append(struct.unpack("B", fp.read(1))[0])

                for j in range(0, 720, 1):
                    for i in range(491, -1, -1):
                        im1.setPixel(j, i, QtGui.QColor(bf[j][-i], bf[j][-i], bf[j][-i], 255).rgba())

            fp.close()

            if int((2*self.MyRadianToGradus(phi))+0.5) == 720:
                try:
                    fp = open(NF[frame], 'rb')

                except IOError:
                    print "Cannot open file read!"

                self.ui.lineEdit_2.setText(NF[frame])

                fp.seek(0, 2)
                size = fp.tell()
                fp.seek(size - (492*720), 0)

                for j in range(0, 720, 1):
                    bf.append([])
                    for i in range(491, -1, -1):
                        bf[j].append(struct.unpack("B", fp.read(1))[0])

                for j in range(0, 720, 1):
                    for i in range(491, -1, -1):
                        im1.setPixel(j, i, QtGui.QColor(bf[j][-i], bf[j][-i], bf[j][-i], 255).rgba())

                fp.close()

                try:
                    fp = open(NF[++frame], 'rb')

                except IOError:
                    print "Cannot open file read!"

                self.ui.lineEdit_3.setText(NF[frame])

                fp.seek(0, 2)
                size = fp.tell()
                fp.seek(size - (492*720), 0)

                for j in range(0, 720, 1):
                    bn.append([])
                    for i in range(491, -1, -1):
                        bn[j].append(struct.unpack("B", fp.read(1))[0])

                for j in range(0, 720, 1):
                    for i in range(491, -1, -1):
                        im2.setPixel(j, i, QtGui.QColor(bn[j][-i], bn[j][-i], bn[j][-i], 255).rgba())

                fp.close()


Но когда я делаю вот такой код, то значение переменной frame не меняется:

def MyTimer(self):
        global frame
        global NF
        global dir
        global bf
        global bn
        global im1
        global im2

        if frame == 669:
            frame = 0

        if self.ui.checkBox_4.isChecked():
            if frame == 0:
                os.chdir(dir)

                fp = QtCore.QFile(NF[frame])
                try:
                    fp.open(fp.ReadOnly)

                except IOError:
                    print "Cannot open file read!"

                self.ui.lineEdit_2.setText(NF[frame])

                mydata1 = QtCore.QByteArray()
                mydata1 = fp.readAll()

                fp.close()

                im1 = QtGui.QImage.fromData(mydata1, "BMP")

            if int((2*self.MyRadianToGradus(phi))+0.5) == 720:
                fp = QtCore.QFile(NF[frame])
                try:
                    fp.open(fp.ReadOnly)

                except IOError:
                    print "Cannot open file read!"

                self.ui.lineEdit_2.setText(NF[frame])

                mydata1 = QtCore.QByteArray()
                mydata1 = fp.readAll()

                fp.close()

                im1 = QtGui.QImage.fromData(mydata1, "BMP")

                fp = QtCore.QFile(NF[++frame])
                try:
                    fp.open(fp.ReadOnly)

                except IOError:
                    print "Cannot open file read!"

                self.ui.lineEdit_3.setText(NF[frame])

                mydata2 = QtCore.QByteArray()
                mydata2 = fp.readAll()

                fp.close()

                im2 = QtGui.QImage.fromData(mydata2, "BMP")


Вроде я логигу кода не менял, а изминил только метод открытия файла и последующей обработки. Почему же это произошло и как поправить?
zuze
Задача решена.

Надо было сделать так:

frame = frame + 1
fp = QtCore.QFile(NF[frame])


Но с чем этого связанно не понимаю.
Litkevich Yuriy

ОФФ:

за каким лешим тебе try-except, если QtCore.QFile.open не роняет программу, а возвращает нормальное true/false?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.