У меня есть код на python, который измеряет результаты измерения HP LCR Meter и собирает данные для нас различными способами. Недавно я создал графический интерфейс для навязывания начальных условий сотрудникам, которым неудобно изменять переменные в коде. Все работает, кроме 1 вещи. Мы используем последнюю версию python xy so python 2.6.6 с pyqt и spyder на ПК с Windows 7.
Обычно мы открываем код в spyder. Но открытие spyder занимает некоторое время, и моему супервайзеру понравилась возможность двойного щелчка по файлу, который открывает графический интерфейс с окном консоли python для вывода ошибок и различной информации, как вы могли бы видеть в spyder.
Как видно из приведенных снимков экрана, существует режим начальной настройки устройства для настройки устройства, которое будет сканироваться измерителем LCR, и есть два пользовательских ввода, которые запрашивает код. На spyder он хорошо печатает эти подсказки в консоли, но в консоли python, открытой без spyder, он постоянно печатает QCoreApplication::exec: The event loop is already running
Странно, что вы все равно можете просто нажать Enter дважды как обычно, и код будет работать как обычно. Но это будет сбивать с толку в основном всех, кроме меня.
Кто-нибудь знает, почему это происходит?
Вот картинки с выхода
Вот код, который запрашивает ввод.
lcr = visa.instrument('GPIB::17')
#clear the instrument
lcr.write('*RST;*CLS')
#enable operation complete notification
lcr.write('*OPC')
if parallel:
lcr.write('FUNC:IMP CPG') #Parallel capacitance, conductance model
else:
lcr.write('FUNC:IMP CSRS') #Series capacitance, resistance model
lcr.write('APER '+integration+','+averages)
lcr.write('OUTP:HPOW ON')
lcr.write('OUTP:DC:ISOL OFF')
lcr.write('VOLT '+vac)
lcr.write('TRIG:SOUR BUS')
if zero == True:
#set open correction parameters
lcr.write('DISP:PAGE CSET')
lcr.write('CORR:LENG 1')
lcr.write('CORR:METH SING')
lcr.write('CORR:LOAD CPG')
lcr.write('CORR:USE 10')
lcr.write('CORR:SPOT1:STATE ON')
lcr.write('CORR:SPOT2:STATE OFF')
lcr.write('CORR:SPOT3:STATE OFF')
lcr.write('CORR:SPOT1:FREQ '+frequency)
#perform open correction -> unprobe device\
raw_input('Unprobe DUT and press ENTER to continue...')
lcr.write('CORR:SPOT1:OPEN')
lcr.write('CORR:OPEN:STATE ON')
lcr.write('DISP:PAGE MEAS')
#poll lcr to determine measurment state
lcr.write('*OPC?')
done = lcr.read()
while done == 0:
lcr.write('*OPC?')
done = lcr.read()
time.sleep(0.5)
#reprobe device
raw_input('Probe DUT, then press ENTER')
lcr.write('FREQ '+frequency)
Подсказки - это два raw_input()
.