等待for循环直到QRadioButton每次被选中?

2024-05-02 07:40:31 发布

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

在这种情况下,我需要从测试人员那里获得pysidegui中每个测试步骤的通过/失败。现在我在for循环中运行的testsuite的数据,并试图在for循环中获取QRadioButton的当前checked/unchecked状态,在此基础上我将做进一步的代码处理。 我的代码是:-

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

我想让循环一直等到测试人员提供了输入,我不想让睡眠或无论如何使用线程,除非方便的方式显示出来。 此代码在不等待输入的情况下运行完整的循环。在


Tags: textselffalseuiforresultetradio
1条回答
网友
1楼 · 发布于 2024-05-02 07:40:31

如果我没听错,你想等到某个按钮(fail_radiopass_radio)在if self.ui.pass_radio.isChecked():行之前被选中。在

在Qt中,可以使用QEventLoop实现这一点,如下所示: waiting for a signal,其中您要等待的信号是clicked。在执行之前,您需要将两个按钮的信号连接到quit插槽。对于PyQt中的信号/插槽连接,可以查看以下内容: http://pyqt.sourceforge.net/Docs/PyQt5/signals_slots.html

所以你需要写一些东西,比如:

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

相关问题 更多 >