首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >等待循环,直到每次QRadioButton被检查?

等待循环,直到每次QRadioButton被检查?
EN

Stack Overflow用户
提问于 2016-11-23 09:50:03
回答 1查看 316关注 0票数 1

在PySide GUI中的每一个测试步骤中,我都需要通过测试/失败测试。现在,我在for循环中运行的测试套件的数据,并试图在for循环中获取QRadioButton的当前检查/未检查状态,并在此基础上进行进一步的代码处理。我的代码是:-

代码语言:javascript
复制
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

我希望循环等待,直到测试人员提供了输入,我不想让睡眠或反正使用线程,除非显示方便的方式。此代码运行完整循环,无需等待输入。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-23 10:12:43

如果我正确地理解了您,您希望等到在fail_radio行之前选中其中一个按钮(pass_radioif self.ui.pass_radio.isChecked(): )。

在Qt中,您可以使用QEventLoop实现这一点,如这里:waiting for a signal,您想要等待的信号是clicked。在执行之前,需要将两个按钮的信号连接到quit插槽。关于PyQt中的信号/插槽连接,您可以在这里查看:slots.html

所以你需要写这样的东西:

代码语言:javascript
复制
loop = QtCore.QEventLoop()
self.ui.fail_radio.clicked.connect(loop.quit)
self.ui.pass_radio.clicked.connect(loop.quit)
loop._exec()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40760944

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档