Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python控制台打印输出的方式与sypder控制台不同_Python_Qt_Pyqt - Fatal编程技术网

Python控制台打印输出的方式与sypder控制台不同

Python控制台打印输出的方式与sypder控制台不同,python,qt,pyqt,Python,Qt,Pyqt,我有一个python代码,它从HP LCR仪表上获取测量值,并以各种方式为我们收集数据。我最近创建了一个GUI,用于为不愿意修改代码中变量的员工输入初始条件。除了一件事外,一切都正常。我们在windows 7 PC上使用最新的python xy so python版本2.6.6和pyqt和spyder 通常我们会在spyder中打开代码。但是打开spyder需要一段时间,我的主管喜欢双击该文件的功能,该文件通过python控制台窗口打开GUI,以打印错误和spyder中的各种信息 从提供的屏幕截

我有一个python代码,它从HP LCR仪表上获取测量值,并以各种方式为我们收集数据。我最近创建了一个GUI,用于为不愿意修改代码中变量的员工输入初始条件。除了一件事外,一切都正常。我们在windows 7 PC上使用最新的python xy so python版本2.6.6和pyqt和spyder

通常我们会在spyder中打开代码。但是打开spyder需要一段时间,我的主管喜欢双击该文件的功能,该文件通过python控制台窗口打开GUI,以打印错误和spyder中的各种信息

从提供的屏幕截图中可以看出,存在初始机器设置模式,用于设置LCR仪表扫描的设备,代码提示有两个用户输入。在spyder上,它可以在控制台中很好地打印这些提示,但在没有spyder的情况下打开的python控制台中,它会连续打印
QCoreApplication::exec:事件循环已经在运行了
奇怪的是,您仍然可以按两次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()

为什么您在控制台中收到连续消息,原因是系统日志使用的输出流与应用程序相同

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

您需要做的是这样()

一些附加读物:

  • QT4教程:
  • 类似主题-如何嵌入python控制台:
  • IPython和QT控制台:

我尝试将您在此处输入的内容添加到我的主代码中,但是当我运行它时,它会首先弹出我的GUI,该GUI正常工作,但要运行ipython shell,我必须关闭GUI。我希望它们同时运行,但只能运行其中一个。我的代码的ipython外壳部分在这个链接上被截屏,谢谢你的帮助
def embed_ipython(window):
    "wrapper funcs - works < IPython 0.11"
    from IPython.Shell import IPShellEmbed
    ipshell = IPShellEmbed(user_ns = dict(w = window))
    ipshell()
if __name__ == "__main__":
    import sys
    from PyQt4 import QtGui
    app = QtGui.QApplication(sys.argv)
    window = QtGui.QMainWindow()
    window.show()
    embed_ipython(window)
    sys.exit(app.exec_())