Цель моей программы - создать файл, который обновляется, возможно, сотнями строк кода каждую секунду, и добавлять каждую строку в текстовое поле PyQt4 в графическом интерфейсе. При запуске моего кода Python, который привязывает пару файлов и выводит каждую строку в текстовое поле QtPy, моя программа аварийно завершает работу при каждом добавлении пакета строк к указанным файлам.
До сих пор я пытался реализовать таймер ожидания time.sleep(1)
внутри цикла while, который добавляет каждую хвостатую строку в текстовое поле. Однако может показаться, что я достигаю переполнения буфера или ограничения кеша, потому что, хотя это работает с тем, как часто обновляется текстовое поле, когда я получаю пакет строк, добавленных в хвостовой файл, моя программа по-прежнему аварийно завершает работу.
import sys, os, PyQt4, subprocess, time, threading
shouldRun = True
def tailFile():
file1 = subprocess.Popen(['tail', '-F', 'FILENAME1', stdout=subprocess.PIPE, preecec_fn=os.setsid)
poll1 = select.poll()
poll1.register(file1.stdout)
file2 = subprocess.Popen(['tail', '-F', 'FILENAME2', stdout=subprocess.PIPE, preecec_fn=os.setsid)
poll2 = select.poll()
poll2.register(file2.stdout)
while shouldRun:
textbox01.append(file1.stdout.readline())
textbox02.append(file2.stdout.readline())
#time.sleep(1)
return
runTailing = threading.Thread(target = tailFile)
runTailing.start()
Мои единственные обнаруженные ошибки:
QObject::connect: Cannot queue arguments of type 'QTextCursor'
(Make sure 'QTextCursor' is registered using qRegisterMetaType().)
ASSERT failure in QVector<T>::operator[]: "index out of range"