与 QtCore.QEventLoop() 链接后无法单击 QRadioButton

Posted

技术标签:

【中文标题】与 QtCore.QEventLoop() 链接后无法单击 QRadioButton【英文标题】:Unable to click on QRadioButton after linking it with QtCore.QEventLoop() 【发布时间】:2017-04-09 19:56:06 【问题描述】:

几天前,我遇到了必须在 for 循环中选中/取消选中 QRadioButton 的情况。这是链接Waiting in for loop until QRadioButton get checked everytime? 在对此实施QEventLoop 之后,它一直运行良好,直到今天。现在我看到我的 QRadioButton(pass) 按钮允许我点击它,但不能点击第二个 QRadioButton(fail)。

Fail QRadioButton 既不会挂起也不会禁用,只是我无法点击它。

我的 QEventLoop 代码是:

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

for循环中的代码是:

self.ui.question_lbl.setText(self.saveQuestionslist[i])
self.loop.exec_();

if self.ui.fail_radio.isChecked():
    ***Some Code**
    self.radioExclusive()
elif self.ui.pass_radio.isChecked():
     ***Some Code**
    self.radioExclusive()

这个 radioExclusive 函数可以做到这一点:-

def radioExclusive(self):
        self.ui.pass_radio.setAutoExclusive(False);
        self.ui.fail_radio.setAutoExclusive(False);
        self.ui.pass_radio.setChecked(False)
        self.ui.fail_radio.setChecked(False)
        self.ui.pass_radio.setAutoExclusive(True);
        self.ui.fail_radio.setAutoExclusive(True);

我不确定这个问题是在什么时候发生的?

【问题讨论】:

【参考方案1】:

好的,问题不在于 QEventloop,而是在开发 Radio Pass 的 UI 时,Extra Area of​​ pass 掩盖了 Fail Radio。

【讨论】:

以上是关于与 QtCore.QEventLoop() 链接后无法单击 QRadioButton的主要内容,如果未能解决你的问题,请参考以下文章

在集合返回后调用集合上的映射与使用点链接映射

一种在选择后保持链接粗体的方法(与 a:visited 不同)

尝试与 libcrypto 链接时链接器失败

Angular js指令中的发布链接与预链接

g++ 编译后的核心转储 + 与 jni 的链接以及随后使用 C++ 和 Java 执行应用程序

常用文件管理命令