python - QPushButton,禁用所有其他按钮,除非再次按下

标签 python python-3.x delay raspberry-pi3 qpushbutton

我有 4 个按钮(打开外部、关闭外部、打开内部、关闭内部),它们控制 2 个门(通过 2 个继电器),一个内门和一个外门。一次只能打开一扇门,我已经整理了这么多代码,现在的问题是当我关闭外门时,我希望它禁用除“打开”外门按钮之外的所有其他按钮。这可能吗?我将在下面粘贴我的代码的相关部分:

 #@QtCore.pyqtSlot()
    def OuterDoorOpen(self):
        if Door2_Channel == 0:
            return GPIO.output(self.Door1,GPIO.HIGH)
        else:
            return "Please Close Inner Door"

    #@QtCore.pyqtSlot()
    def OuterDoorClose(self):
        if Door2_Channel == 1:
            return
                GPIO.output(self.Door2,GPIO.LOW), self.pushButton_2.setEnabled(False),
self.pushButton_3.setEnabled(False),
self.pushButton_4.setEnabled(False)


    #@QtCore.pyqtSlot()
    def InnerDoorOpen(self):
        if Door1_Channel == 0:
            return GPIO.output(self.Door2,GPIO.HIGH)
        else:
            return "Please Close Outer Door"

    #@QtCore.pyqtSlot()
    def InnerDoorClose (self):
        if Door1_Channel == 1:
            return GPIO.output(self.Door2,GPIO.LOW)

我使用 QtDesigner 设计了 ​​GUI,并且我在 python 3.7 上使用 pyqt5。我使用树莓派控制继电器。每当我运行此代码并按下按钮关闭时,都会导致程序崩溃。

谢谢

最佳答案

抱歉,如果这个建议听起来很愚蠢,但是如果您在 OuterDoorClose block 中添加 Try except block 并调试代码会怎么样?它可能会帮助您了解哪一行代码导致程序崩溃以及原因。例如:

self.timer = QtCore.QTimer()
self.timer.timeout.connect(self.enable_buttons)

#@QtCore.pyqtSlot()
def OuterDoorClose(self):
    try:
        if Door2_Channel == 1:
            self.pushButton_2.setEnabled(False)
            self.pushButton_3.setEnabled(False)
            self.pushButton_4.setEnabled(False)
            self.timer.start(30000)
            return GPIO.output(self.Door2,GPIO.LOW)
    except Exception as e:
        #Your exception code



def self.enable_buttons(self):
    self.pushButton_2.setEnabled(True)
    self.pushButton_3.setEnabled(True)
    self.pushButton_4.setEnabled(True)

关于python - QPushButton,禁用所有其他按钮,除非再次按下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52474981/

相关文章:

python - render_to_response 中传递的字典范围

python - Django 重定向查看

python - 在 UIAutomator 中设置文本

python - 如何避免 flake 8's "F821 undefined name '_' “when _ has been installed by gettext?

javascript - Chrome 扩展程序 : must delay page load until javascript finishes

php - 如何阻止影响我整个 PHP 代码的 PHP sleep()?

python - "group by" Pandas 数据框中的重复值

python - 如何使用 python 更新嵌套 JSON 文件中的值?

python - ValueError:形状 (20,1) 和 (2,1) 未对齐:1 (dim 1) != 2 (dim 0)

ocaml - 在 OCaml 中 sleep 不到一秒钟