如何禁用pyqt中的特定标准按钮

时间:2017-06-02 10:00:32

标签: python pyqt

我正在开发python应用程序,我创建了一个对话框,其中包含几个标准按钮,如:Reset,OK,Cancel,Apply。 这是标准按钮的相关代码,

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'

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

2 个答案:

答案 0 :(得分:1)

@Omkar 的评论作为答案:

您需要找到特定对象,然后以 setEnabled() 作为参数调用其 False 方法。

对于您的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 以了解禁用。

答案 1 :(得分:0)

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

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