Python控制台打印输出与sypder cons不同

2024-05-29 05:58:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个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()。在


Tags: the代码inputrawonwritestatespyder
1条回答
网友
1楼 · 发布于 2024-05-29 05:58:29

在控制台中获得连续消息的原因是,系统日志使用的输出流与应用程序相同。在

Spyder是一个很好的程序,它只是把IPython或Python(备份)控制台嵌入到QT窗口中,您可以使用类似的解决方案-只需使用Qt4绘制窗口,其中包括IPython控制台

您需要做的是(source):

def embed_ipython(window):
    "wrapper funcs - works < IPython 0.11"
    from IPython.Shell import IPShellEmbed
    ipshell = IPShellEmbed(user_ns = dict(w = window))
    ipshell()

这里的“window”是一个中心对象,您希望将其公开给IPython(操作、测试各种方法等)。在

GUI应用程序初始化如下:

^{pr2}$

一些附加读数:

相关问题 更多 >

    热门问题