基になる C/C++ オブジェクトが削除されたときに、よく知られている PyQt ランタイム エラーを回避しようとしています。
http://www.riverbankcomputing.com/pipermail/pyqt/2009-April/022809.html
PyQt4 - "RuntimeError: 基になる C/C オブジェクトが削除されました"
PyQt4 ネストされたクラス - 「RuntimeError: 基礎となる C/C++ オブジェクトが削除されました」
PyQt: RuntimeError: ラップされた C/C++ オブジェクトが削除されました
サブクラスのすべてがメソッドを呼び出すsuper()
ため、基本クラスが適切に構築されます。
それでも、このエラーが発生し、( a のメソッドを使用して) にQComboBox
ウィジェットを追加しているという事実が原因であるかどうか疑問に思っていますが、それを含む として親を設定できません。試してみると、次のエラーが表示されます。QTreeWidgetItem
setItemWidget()
QTreeWidget
QTreeWidgetItem
TypeError: QComboBox(QWidget parent=None): argument 1 has unexpected type 'QTreeWidgetItem'
もちろん、コンストラクターで親を省略するか、親QTreeWidget
として渡すことができますが、正しい親を参照する必要があると思います。
をサブクラスQComboBox
化し、サブクラスで に対していくつかの基本的な操作を実行しますが、サブクラス化されQTreeWidget
た のメソッドに入るとすぐに、を含むQComboBox
親の基になる C オブジェクトが削除されます (これが、何かを考えている理由です)。の親を設定してください)。QTreeWidgetItem
QComboBox
QComboBox
実行時エラーの 10 回中 9 回は、基本クラスが構築されていないことが原因であることを理解しています。しかし、それが除外された場合、他にどのようにエラーが発生するのでしょうか? 正しい親を参照していないことが原因でしょうか?
編集
QComboBox を使用して、新しいコンボボックスが選択されたときに通知します。新たに選択すると、その選択された値が PyXB XML ノードに追加されます。興味深いことに、この問題は、情報を XML ファイルに永続的に格納する PyXB クラス バインディングに値を追加した場合にのみ発生します。つまり、コードのその部分が実行されない場合、エラーは発生しません。コードが PyXB 操作を実行して、XML ノード バインディングに値を追加する場合にのみ発生します...