PyQt で loadUi() メソッドを使用して QtDesigner インターフェイス ファイルをロードするというアイデアが気に入っています。これは、ui ファイルを頻繁に変更し、常に py ファイルに変換したくないためです。
ただし、ui ファイル内のさまざまなウィジェットやビューにアクセスする方法を理解するのに苦労しています。以下は、UI での読み込み方法を示しています。
class MyClass(QtGui.QMainWindow):
def __init__(self, parent = None):
super().__init__(parent)
ui = uic.loadUi('MyUserInterface.ui',self)
if __name__ == '__main__':
import sys
app = QtGui.QApplication(sys.argv)
mainapplication = MyClass()
mainapplication.show()
app.exec_()
正常に表示されますが、次のような方法で GUI の要素にアクセスできると思っていました...
ui.sampleButton.makeDraggable()
私の質問は、GUI 内のさまざまな要素にどのようにアクセスできますか?
編集 1: uic.load 呼び出しを ui に割り当てずに試してみました。以下のようにアクセスすると、Ui_MainWindow を使用していくつかのプロパティにアクセスできます。ただし、エラーがスローされます
if __name__ == '__main__':
import sys
app = QtGui.QApplication(sys.argv)
mainapplication = MyClass()
mainapplication.Ui_MainWindow.graphicsView.acceptDrops(True)
mainapplication.show()
app.exec_()
私が得るエラーは...
Traceback (most recent call last): File "C:\Users\Me\workspaces\com.samplesoftware.software\src\SoftwareView\MyClass.py", line 17, in <module>
mainapplication.Ui_MainWindow.graphicsView.acceptDrops(True)
AttributeError: 'MyClass' object has no attribute 'Ui_MainWindow'
何か案は?