pyqtに埋め込まれた複数のmatplotlibキャンバスは、マウスオーバーでサイズを変更します

johs42

PyQtGUIの複数列のレイアウトに複数のmatplotlibプロットを埋め込もうとしています。一見、必要に応じてレイアウトを設定することに成功しましたが、いずれかのキャンバス上でマウスを動かすと、サイズと「ちらつき」が変わります。ツールバーのズームボタンを押すと、これがより顕著になります。

matplotlibキャンバスごとに、ツールバーを接続しました。ツールバーを接続しないと、問題は発生しません。QGridLayoutまたはネストされたQVBoxLayoutsとQHBoxLayoutsを使用して、ツールバーとキャンバスをいくつかの方法で配置してみました。いずれにせよ、互いに並んでプロットがある場合、問題が発生します。すべてのプロットを1つの列に配置しても、そうではありません。

これをWindowsのPython3.6(Anaconda 5.0.1)、LinuxのPyQt4とPython 3.5.2(KDE Neon 64ビット)、およびPyQt4とPyQt5(v。5.7.1)の両方、matplotlib 1.5.1で試しましたが、同じ結果。add_subplotの代わりにadd_axesを使用してみました。誰かがこれを引き起こしている原因を理解したり、何らかの回避策を見つけたりするのを手伝ってもらえますか?matplotlibサブプロットを使用できません。

from PyQt5 import QtCore, QtGui, QtWidgets
from matplotlib.figure import Figure
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.backends.backend_qt5agg import NavigationToolbar2QT as NavigationToolbar

class Window(QtWidgets.QWidget):
    def __init__(self):
        super(Window, self).__init__()

        figure1 = Figure()
        figure2 = Figure()
        figure3 = Figure()
        figure4 = Figure()
        canvas1 = FigureCanvas(figure1)
        canvas2 = FigureCanvas(figure2)
        canvas3 = FigureCanvas(figure3)
        canvas4 = FigureCanvas(figure4)
        ax1 = figure1.add_subplot(111)
        ax2 = figure2.add_subplot(111)
        ax3 = figure3.add_subplot(111)
        ax4 = figure4.add_subplot(111)

        toolbar1 = NavigationToolbar(canvas1, self)
        toolbar2 = NavigationToolbar(canvas2, self)
        toolbar3 = NavigationToolbar(canvas3, self)
        toolbar4 = NavigationToolbar(canvas4, self)

        mainLayout = QtWidgets.QGridLayout()
        mainLayout.addWidget(toolbar1,0,0)
        mainLayout.addWidget(toolbar2,0,1)
        mainLayout.addWidget(toolbar3,2,0)
        mainLayout.addWidget(toolbar4,2,1)
        mainLayout.addWidget(canvas1,1,0)
        mainLayout.addWidget(canvas2,1,1)
        mainLayout.addWidget(canvas3,3,0)
        mainLayout.addWidget(canvas4,3,1)

        self.setLayout(mainLayout)
        self.setWindowTitle("Flow Layout")

if __name__ == '__main__':

    import sys

    app = QtWidgets.QApplication(sys.argv)
    mainWin = Window()
    mainWin.show()
    sys.exit(app.exec_())
M.ジダン

同様の問題があり、次の方法で解決しました。

toolbar1.setMinimumWidth(canvas1.width())
toolbar2.setMinimumWidth(canvas2.width())
toolbar3.setMinimumWidth(canvas3.width())
toolbar4.setMinimumWidth(canvas4.width())

問題は、ツールバーがキャンバスよりも広くなる場合です。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

マウスオーバー時にボタンのテキストを変更し、ボタン全体のサイズを変更します

分類Dev

アップロードする前に、キャンバスで画像のサイズを変更します

分類Dev

ブラウザのズームがキャンバスサイズを変更しないようにするにはどうすればよいですか?

分類Dev

Matplotlibキャンバスのインスタンスをpyqtに埋め込みます-プロットが表示されません

分類Dev

ユーザーがスクロールペインのサイズを変更した場合に、スクロールペインに埋め込まれたフローペインにギャップを動的に追加する方法

分類Dev

WebBrowserの自動サイズ変更により、divに埋め込まれたスクロールバーが削除されます

分類Dev

マウス描画で、キャンバスを再描画してサイズを変更します

分類Dev

kivyを使用してアプリのキャンバスまたはウィンドウサイズをどのように変更しますか

分類Dev

埋め込まれたJavaウェブサーバーはアプリのインターフェースを隠します

分類Dev

jQueryアコーディオンのGoogleマップはjsFiddleで機能しますが、ウィンドウが手動でサイズ変更されるまでマップがサーバーに読み込まれません

分類Dev

マウスオーバーでキャンバスに描かれた画像を変更する

分類Dev

埋め込まれたバーコードスキャナーをAndroidStudio経由でアプリのフラグメントに追加します

分類Dev

d3.jsは、マウスオーバー時に折れ線グラフのドットの色とサイズを変更します

分類Dev

キャンバスに埋め込まれたフレーム内の場所を使用するにはどうすればよいですか?

分類Dev

埋め込まれたグーグルマップは、ウィンドウのサイズを変更するまで完全なマップを表示しません

分類Dev

ウィンドウを使用したキャンバスのサイズ変更-それを行う良い方法はありますか?

分類Dev

ChartJSは、キャンバスのサイズをデフォルトサイズに変更し続けます

分類Dev

WPF:マウスまたはタッチを使用してバーのサイズを変更する方法

分類Dev

リソースファイルから読み込まれ、Grapics32でサイズ変更され、キャンバスに描画された透明なPNG画像

分類Dev

JavaFX-画面のサイズが変更されたときにキャンバスのサイズを変更します

分類Dev

キャンバスをfabricjsに埋め込まれた画像base64でSVGに変換する方法

分類Dev

matplotlibをtkinterキャンバスに埋め込むと、2つのウィンドウが開きます

分類Dev

キャンバスコンテンツのサイズを変更し、サイズ変更された(および圧縮された)画像のbase64データを取得するにはどうすればよいですか?

分類Dev

サイズが大きすぎる場合、サイズ変更された画像はその下のテキストを自動的にカバーします

分類Dev

黒のサイズ変更されたキャンバスは、時間の経過とともに図面が完全に黒にフェードしません

分類Dev

キャンバスサイズ変更スクロールバーのTkinterは調整されません

分類Dev

Mopubモバイルウェブ/ JavaScriptの実装はテキストのサイズを変更/ CSSをオーバーライドします

分類Dev

FabricJsを使用して、画像のサイズとスケールに合わせてキャンバスのサイズを変更します

分類Dev

キャンバス-ウィンドウのサイズ変更時にマウス座標を変換する

Related 関連記事

  1. 1

    マウスオーバー時にボタンのテキストを変更し、ボタン全体のサイズを変更します

  2. 2

    アップロードする前に、キャンバスで画像のサイズを変更します

  3. 3

    ブラウザのズームがキャンバスサイズを変更しないようにするにはどうすればよいですか?

  4. 4

    Matplotlibキャンバスのインスタンスをpyqtに埋め込みます-プロットが表示されません

  5. 5

    ユーザーがスクロールペインのサイズを変更した場合に、スクロールペインに埋め込まれたフローペインにギャップを動的に追加する方法

  6. 6

    WebBrowserの自動サイズ変更により、divに埋め込まれたスクロールバーが削除されます

  7. 7

    マウス描画で、キャンバスを再描画してサイズを変更します

  8. 8

    kivyを使用してアプリのキャンバスまたはウィンドウサイズをどのように変更しますか

  9. 9

    埋め込まれたJavaウェブサーバーはアプリのインターフェースを隠します

  10. 10

    jQueryアコーディオンのGoogleマップはjsFiddleで機能しますが、ウィンドウが手動でサイズ変更されるまでマップがサーバーに読み込まれません

  11. 11

    マウスオーバーでキャンバスに描かれた画像を変更する

  12. 12

    埋め込まれたバーコードスキャナーをAndroidStudio経由でアプリのフラグメントに追加します

  13. 13

    d3.jsは、マウスオーバー時に折れ線グラフのドットの色とサイズを変更します

  14. 14

    キャンバスに埋め込まれたフレーム内の場所を使用するにはどうすればよいですか?

  15. 15

    埋め込まれたグーグルマップは、ウィンドウのサイズを変更するまで完全なマップを表示しません

  16. 16

    ウィンドウを使用したキャンバスのサイズ変更-それを行う良い方法はありますか?

  17. 17

    ChartJSは、キャンバスのサイズをデフォルトサイズに変更し続けます

  18. 18

    WPF:マウスまたはタッチを使用してバーのサイズを変更する方法

  19. 19

    リソースファイルから読み込まれ、Grapics32でサイズ変更され、キャンバスに描画された透明なPNG画像

  20. 20

    JavaFX-画面のサイズが変更されたときにキャンバスのサイズを変更します

  21. 21

    キャンバスをfabricjsに埋め込まれた画像base64でSVGに変換する方法

  22. 22

    matplotlibをtkinterキャンバスに埋め込むと、2つのウィンドウが開きます

  23. 23

    キャンバスコンテンツのサイズを変更し、サイズ変更された(および圧縮された)画像のbase64データを取得するにはどうすればよいですか?

  24. 24

    サイズが大きすぎる場合、サイズ変更された画像はその下のテキストを自動的にカバーします

  25. 25

    黒のサイズ変更されたキャンバスは、時間の経過とともに図面が完全に黒にフェードしません

  26. 26

    キャンバスサイズ変更スクロールバーのTkinterは調整されません

  27. 27

    Mopubモバイルウェブ/ JavaScriptの実装はテキストのサイズを変更/ CSSをオーバーライドします

  28. 28

    FabricJsを使用して、画像のサイズとスケールに合わせてキャンバスのサイズを変更します

  29. 29

    キャンバス-ウィンドウのサイズ変更時にマウス座標を変換する

ホットタグ

アーカイブ