我有一个python代码,它可以从HP LCR仪表上获取测量值,并以各种方式为我们收集数据。我最近创建了一个GUI,用于为不喜欢修改代码中变量的员工输入初始条件。除了一件事,一切都正常。我们使用最新的pythonxy-so-python版本2.6.6和pyqt和spyder在windows7pc上
通常我们会在spyder中打开代码。但是打开spyder需要一段时间,我的主管喜欢这样的功能:双击文件,打开带有python控制台窗口的GUI,打印错误和各种信息,就像您在spyder中看到的一样。在
从提供的屏幕截图中可以看到,有一个初始机器设置模式,用于设置要由LCR仪表扫描的设备,代码提示有两个用户输入。在spyder上,它可以在控制台中很好地打印这些提示,但是在没有spyder的情况下打开的python控制台中,它会连续打印QCoreApplication::exec: The event loop is already running
奇怪的是,您仍然可以按两倍于正常值的enter键,代码将正常运行。但这会让除了我以外的所有人都感到困惑。在
有人知道为什么会这样吗?在
Here are the pictures of the output
下面是提示输入的代码。在
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()
。在
在控制台中获得连续消息的原因是,系统日志使用的输出流与应用程序相同。在
Spyder是一个很好的程序,它只是把IPython或Python(备份)控制台嵌入到QT窗口中,您可以使用类似的解决方案-只需使用Qt4绘制窗口,其中包括IPython控制台
您需要做的是(source):
这里的“window”是一个中心对象,您希望将其公开给IPython(操作、测试各种方法等)。在
GUI应用程序初始化如下:
^{pr2}$一些附加读数:
相关问题 更多 >
编程相关推荐