У меня есть графический интерфейс, разработанный с использованием pyqt4, в котором есть кнопка запуска.при нажатии кнопки запуска я вызываю таймер и поток.Таймер продолжает следить за потоком.в потоке я вызываю командную строку для выполнения контрольных примеров.Я хочу, чтобы поток был живым до тех пор, пока не будет открыта командная строка, и хочу сказать, что он мертв как только я закрою командную строку.
Код, который я написал для достижения этой цели, приведен ниже.Любые недостатки логики?или любой другой лучший способ добиться этого?
self.connect(self.run_button, SIGNAL('clicked()'), self.runscript)
def runscript(self):
self.timer = QTimer()
self.timer.connect(self.timer, SIGNAL("timeout()"),self.sendData)
self.timer.start(1000)
def sendData(self):
if self.run_timer:
run_monitor_object = RunMonitor()
print 'Starting the thread...........'
run_monitor_object.start()
self.run_timer = False
if run_monitor_object.isAlive():
print 'Thread Alive...'
else:
print 'Thread is Dead....'
class RunMonitor(threading.Thread):
def __init__(self, parent=None):
threading.Thread.__init__(self)
def run(self):
print 'Invoking Command Prompt..........'
subprocess.call(["start", "/DC:\\Scripts", "scripts_to_execute.bat"], shell=True)
Когда я запускаю это, я получаю следующую ошибку ...
UnboundLocalError: локальная переменная 'run_monitor_object', на которую ссылается перед присваиванием if run_monitor_object.isAlive ():
Просто интересно, как еще, я мог бы