【问题标题】:How to disable a particular standard button in pyqt如何在pyqt中禁用特定的标准按钮
【发布时间】:2021-03-08 20:26:35
【问题描述】:

我正在开发 python 应用程序,我在其中创建了包含几个标准按钮的对话框,例如:重置、确定、取消、应用。 这是标准按钮的相关代码,

self.buttonBox = QtGui.QDialogButtonBox(ROI)
self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Reset|QtGui.QDialogButtonBox.Apply|QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Ok)
self.buttonBox.setObjectName( ("buttonBox"))

我的问题是如何只禁用应用按钮 即使我尝试了以下代码

QtGui.QDialogButtonBox.Apply.setEnabled(False)

但出现错误

AttributeError: 'StandardButton' object has no attribute 'setEnabled'

那么如何禁用标准按钮集中的特定按钮

【问题讨论】:

    标签: python pyqt


    【解决方案1】:

    @Omkar 的评论作为答案:

    你需要找到具体的对象,然后以False为参数调用它的setEnabled()方法。

    对于您的QDialogButtonBox,您可以通过

    访问特定按钮
    btn_apply = self.buttonBox.button(QtGui.QDialogButtonBox.Apply)
    

    然后禁用使用

    btn_apply.setEnabled(False)
    

    或者,这可以一步完成:

    self.buttonBox.button(QtGui.QDialogButtonBox.Apply).setEnabled(False)
    

    有关“检索”按钮的参考,请参阅 https://doc.qt.io/qt-5/qdialogbuttonbox.html#button,有关禁用的参考,请参阅 https://doc.qt.io/qt-5/qwidget.html#enabled-prop

    【讨论】:

      【解决方案2】:

      我没有很广泛地使用它,但认为可以有一个解决方案

      如果您可以从 readthedoc 网站找到 pyqt,请尝试使用 .setVisible 类型的 api

      【讨论】:

      • 我得到的解决方案只是按照这段代码 btn = self.buttonBox.button(QtGui.QDialogBu​​ttonBox.Apply) btn.setEnabled(False)
      • 需要导入QDialogBu​​ttonBox。在 QT5 中,这似乎在 QtWidgets 中,而不是在 QtGui 中。因此,如果存在from PyQt5.QtWidgets import QDialogButtonBox,它就可以工作。
      • @Omkar 您在评论中的方法对我有用。也许您可以将其添加为答案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-09-08
      • 2018-09-11
      • 2022-01-15
      • 2015-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多