2011-08-12 16 views
3

私はHP LCRメーターの測定を取り、さまざまな方法で私たちのデータを収集するPythonコードを持っています。私は最近、従業員がコード内の変数を変更するのに快適ではない初期条件を代入するためのGUIを作成しました。 1つを除いてすべてが動作します。私たちは最新のpython xyをpythonバージョン2.6.6とpyqtとspyderをWindows 7 PCに使用しています。Pythonコンソールはsypderコンソールとは異なる出力を表示します

通常、私たちはスパイダーでコードを開きます。スパイダーを開くにはしばらく時間がかかり、私の監督はファイルをダブルクリックするだけで、スパイダーで表示されるようにエラーやさまざまな情報を表示するためのPythonコンソールウィンドウを開くことができました。

提供されているスクリーンショットからわかるように、LCRメーターでスキャンするデバイスを設定するための初期マシンセットアップモードがあり、コード入力を促す2つのユーザー入力があります。スパイダーでは、これらのプロンプトをコンソールにうまく印刷しますが、スパイダーなしで開いたPythonコンソールでは、連続して印刷されますQCoreApplication::exec: The event loop is already running奇妙なことに、通常のように2回入力するだけで、コードは正常に実行されます。しかし、それは基本的に私以外の誰もが混乱することになります。

これはなぜ起こっているのでしょうか?

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) 

プロンプトは2つですraw_input()です。

答えて

2

コンソールで連続したメッセージが表示される理由は、システムログがアプリケーションと同じ出力ストリームを使用しているからです。

スパイダーはちょうどQTウィンドウでIPythonやPython(バックアップ)コンソールを埋め込む素敵なプログラム、である、あなたは同様のソリューションを使用することができます - ちょうどあなたがする必要がどのようなコンソール

があるIPythonを含む、ウィンドウを描画するためにはQt4を使用しますこの(source):ここで

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

「窓」あなたはIPythonに公開するいくつかの種類(様々な方法をテストし、操作するため、など)の中心的対象です。

GUIアプリの初期設定は次のようになります

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_()) 

いくつかの追加の測定値:

+0

私はあなたが私のメインコードに入れたものを追加しようとしましたが、私はそれを実行すると、最初にGUIが正常に動作しますが、GUIを閉じなければならないipythonシェルを実行します。私はそれらを同時に実行するが、どちらか一方を実行することができます。私のコードのipythonシェルの部分は、このリンクでキャプチャされた画面ですhttp://imgur.com/cy5Eu助けてくれてありがとうbtw –

関連する問題