私はPyQtインタフェースを構築しましたが、ウィジェットのアクティブ/非アクティブ状態の一部を切り替えたり、ウィジェットクラスの外部からそれらとやり取りしたりしたいと思います。 私はすべてのウィジェットを持つメインウィンドウクラスを持ち、クラス外の関数 - ここではbuttton1
に接続しています。この例の私の目標は、button1
を押してbutton2
を有効にすることです。PyQt:ウィジェットクラスの外部から有効な状態にアクセス
以下のコードでは、私のUi_MainWindow
クラスに属性button1
がないというエラーが表示されます。
コード:
from PyQt4 import QtCore, QtGui
def toggle():
Ui_MainWindow.button2.setEnabled(True)
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName(_fromUtf8("MainWindow"))
self.button1 = QtGui.QPushButton(self.centralwidget)
self.button1.clicked.connect(toggle)
self.button2 = QtGui.QPushButton(self.centralwidget)
self.button2.setEnabled(False)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
MainWindow = QtGui.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
正直、彼らは私にとって非常に抽象的であるので、私は、クラスを使用して避けてきた知るまでは。私はそれが私がここで失敗する理由だと思う。私は間違った方法でウィジェットクラスにアクセスしていると思います。
誰かが私を正しい方向に向けることができれば、感謝します。私は同様の問題に対するすべての答えを読んだが、それは私が解決に向かうのを助けなかった。
感謝:ここ
mainwindow.ui
ファイルです。あなたの例では、MainWindowクラス内の関数からの参照を説明しています。クラス外の関数からどうやってやるの? – Esmi@エスミ。あなたは正しい方向を指すように求めました。それは、外部関数ではなくメソッドを使用することを意味します。あなたが後者をしようとすると、良いGUIコードを書くことはかなり困難になる可能性があります。あなたはそのようなことをしたいと思う特別な理由はありますか?どのような問題を解決しようとしていますか? – ekhumoro