2016-11-23 3 views
1

私は、PySide GUIのすべてのテストステップで、合格/不合格をテスターから取得する必要がある状況があります。今度はtestsuiteのデータがforループで実行されており、forループのQRadioButtonの現在のチェック/チェックされていない状態を取得しようとしています。これに基づいてコード処理が行われます。 私のコードは次のとおりです。 -QRadioButtonが毎回チェックされるまでforループを待っていますか?

for i in range(self.ui.hlfDataset_sa_lst.count()): 

    self.ui.pass_radio.setChecked(False) 
    self.ui.fail_radio.setChecked(False) 

    print "command ", str(self.ui.hlfDataset_sa_lst.item(i).text()) 
    print "Run ", str(i)+" is here" 
    ## 
    self.telnetThread = TelnetThread.SocketTunnel("localhost",2000) 
    returnCommand = self.telnetThread.communicateSock(str(self.ui.hlfDataset_sa_lst.item(i).text())) 
    print "returnCommand ",returnCommand 
    ##XML Data structure 
    result = ET.SubElement(results,"result") 
    testcasestepno = ET.SubElement(result,"testcasestepno") 
    testerComment = ET.SubElement(result,"testerComment") 
    testresult = ET.SubElement(result,"testresult") 
    mguImage = ET.SubElement(result,"mguImage") 

    if self.ui.pass_radio.isChecked(): 
     print "TC passed " 
     testcasestepno.text = str(i+1) 
     testresult.text = "PASS" 
     mguImage.text = "NA" 
     testerComment.text=str(self.ui.testercomment_txt.text()) 
    elif self.ui.fail_radio.isChecked(): 
     if not str(self.ui.testercomment_txt.text()): 
      QtGui.QMessageBox.critical(self, 'Tester Comment ', 'Tester Comment is desired ', QtGui.QMessageBox.Ok) 
      self.ui.pass_radio.setChecked(False) 
      self.ui.fail_radio.setChecked(False) 
     else: 
      print "TC failed " 
      testcasestepno.text = str(i+1) 
      testresult.text = "FAIL" 
      testerComment.text = str(self.ui.testercomment_txt.text()) 
      #Save Live Image when failed 

私はテスターが入力を提供していると私は便利な方法が示されない限り、スレッドを使用するために睡眠を置くか、とにかくしたくないまで待つためにループのためにしたいです。 このコードは、入力を待たずに完全なループを実行します。

答えて

1

私が正しく理解していれば、ボタンまたはpass_radioのいずれかがif self.ui.pass_radio.isChecked():行の前にチェックされるまで待つ必要があります。 Qtので

、あなたはここのようなQEventLoopを使用して、これを達成することができます:あなたが待つしたい信号がclickedある waiting for a signal、。実行する前に、両方のボタンの信号をquitスロットに接続する必要があります。 PyQtはに接続する信号/スロットのためにあなたがここに見ることができる:PyQt5例に設けられた信号接続するための構文はまた、バージョン4.5以降PyQt4のために働く

loop = QtCore.QEventLoop() 
self.ui.fail_radio.clicked.connect(loop.quit) 
self.ui.pass_radio.clicked.connect(loop.quit) 
loop._exec() 
+0

http://pyqt.sourceforge.net/Docs/PyQt5/signals_slots.html

をだからあなたのような何かを記述する必要があります。 4.5より古いバージョンのPyQt4を使用している人はほとんどいません(v4.5は7年以上前にリリースされました!)。したがって、PyQt4の例でも「新しいスタイル」の構文が好まれます。詳細は、[here](http://pyqt.sourceforge.net/Docs/PyQt4/new_style_signals_slots.html)を参照してください。 –

+0

@three_pineapples @three_pineapples、説明をいただきありがとうございます。QtとPythonを別々に使用していますので、私はそれを知らなかったので... – ukrkyi

+0

responeのおかげで、私は "exec"という行176、列14に遭遇しました。期待していた: ... loop.exec() –

関連する問題