В приведённом коде значение 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")
Вроде я логигу кода не менял, а изминил только метод открытия файла и последующей обработки. Почему же это произошло и как поправить?
Сообщение отредактировал Litkevich Yuriy - 10.6.2013, 13:01