問題タブ [qmdiarea]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - QMdiSubWindow を最小化すると、QMdiSubWindow にネストされた FigureCanvasQTAgg が segfault する
ユーザーが自分のプロットをその場で作成できるように、 QMdiSubWindow 内に FigureCanvasQTAgg を配置しようとしています。私はこの非常に小さな自己完結型のコードを作成しました:
この問題は、プログラムを実行して QtGui.QMdiSubWindow オブジェクトを最小化しようとすると発生します。これを行うと、プログラムはセグメンテーション違反を起こし、エラーの説明なしで終了します。これは、qt、python バインディング、または FigureCanvasQTAgg オブジェクトのエラーである可能性があります。もちろん、これらのオブジェクトを間違って使用しているのは私かもしれません。サブウィンドウを最小化するとセグメンテーション違反が発生する理由を理解し、この問題を解決する方法を見つけてください。ありがとうございました。
私の環境はubuntu 14.04で、Qtバージョンを使用しています:4.8.7 SIPバージョン:4.16.9 PyQtバージョン:4.11.4 MatplotLibバージョン:1.5.0
ドラッグ アンド ドロップ プロパティ セットの例を次に示します。それにも問題があるようです。
pyqt - PyQt4 QWorkspace を PyQt5 QMdiArea に移植 -- subWindowList メソッド
「Python と Qt を使用した高速 GUI プログラミング」のプログラム例を PyQt4 から PyQt5 に移植する際に問題が発生しました。サンプル プログラムは、メイン ウィンドウ内で複数のテキスト編集ウィンドウを実行できる MDI アプリケーションを示しています。
PyQt4 バージョンには python 3.4.4 と PyQt 4.8.7 を使用しました。PyQt5 バージョンには python 3.4.4 と PyQt 5.5.1 を使用しました。
元の PyQt4 プログラムで、すべての古いスタイルのシグナル定義を新しいスタイルのシグナルに変更することから始めました。新しいスタイルのシグナルが PyQt 4.5 で実装されたため、これらの変更を加えて元のプログラムを実行できました。すべての古いスタイルのシグナルを新しいスタイルのシグナルに更新した後、アプリケーションは正常に実行されました。
元のプログラムは PyQt4.QtGui.QWidget.QWorkspace クラスを使用して MDI ワークスペースを実装します。QWorkspace は PyQt4.3 で PyQt5.QtWidgets.QMdiArea クラスに置き換えられました。私の問題は、QMdiArea で動作するように元のコードを変更しようとしたときに表面化しました。
各テキスト ドキュメントは、QTextEdit のサブクラスであるカスタム TextEdit ウィジェットのインスタンスを使用して表示および編集されます。
MDI アプリケーションの最小 PyQt5 バージョン -- texteditor.py
問題は fileOpen() メソッドで発生します。
PyQt4 fileOpen() メソッド
PyQt5 fileOpen() メソッド
windowList() は、PyQt5 では subWindowList() として実装されています。問題は、PyQt4 バージョンでfor textEdit in self.mdi.windowList():
は、実行時に textEdit が TextEdit タイプであるため、次の行が
if textEdit.filename == filename
TextEdit にはファイル名パラメーターがあるため、機能します。textEdit は {TextEdit}textedit.TextEdit オブジェクトですが、PyQt5 バージョンでfor textEdit in self.mdi.subWindowList():
は、実行後に textEdit のタイプが QMdiSubWindow なので、もちろんトレースバックが生成されます。
本当に困惑するのは、PyQt4 バージョンの textEdit が TextEdit タイプになる方法です。str型だと思います。
python - 別のファイルから mdiArea サブウィンドウを作成する
メイン ウィンドウ クラス内にある mdiArea 内にサブ ウィンドウ (別の Python ファイル内に作成する必要があります) を作成する際に問題があります。
My_app.py
diagnostic_center_module.py
この問題を解決するために、あなたの助けを期待しています。よろしくお願いします。
python - PyQt5 シグナル通信エラー
私が遭遇した次の問題についてあなたの助けが必要です。Main.py と Module.py の 2 つの Python ファイルがあり、PyQt5 シグナルを使用して通信する必要があります。コードは次のとおりです。
Main.py
Module.py
どんな種類の助けも大歓迎です。前もって感謝します。