前提・実現したいこと
Qt Designerで設置したgraphicsViewに画像ファイルをフィットさせるようと試みています。
ボタンによってリンク先の画像ファイルを切り替え表示させる事を実装中、
最初の画像のみgraphicsViewの中心に小さく表示され、次回以降はフィットした状態で表示されます
最初からフィットさせた状態で表示させたいです。
発生している問題・エラーメッセージ
具体的に以下のような流れで表示されます
該当のソースコード
メイン
python
1 2import os 3import sys 4 5from PyQt5 import QtWidgets, uic 6from PyQt5 import QtCore as Qc 7from PyQt5 import QtGui as Qg 8from PyQt5 import QtWidgets as Qw 9from PyQt5.Qt import * 10 11import GUI 12 13# ########################################################################### # 14# ########################################################################### # 15class MyForm(QtWidgets.QMainWindow): 16 def __init__(self, parent=None): 17 super().__init__(parent) 18 self.ui = GUI.Ui_Form() 19 self.ui.setupUi(self) 20 21 global ImageFile 22 ImageFile = [] 23 ImageFile.append(r'C:\test\20210712\ImageFile\Penguins.jpg') 24 ImageFile.append(r'C:\test\20210712\ImageFile\Koala.jpg') 25 ImageFile.append(r'C:\test\20210712\ImageFile\Desert.jpg') 26 27 global n 28 n = 0 29 30 self.view = Qw.QGraphicsView() 31 self.scene = Qw.QGraphicsScene() 32 self.srect = self.view.rect() 33 34 self.scene.clear() 35 pic_Item = Qw.QGraphicsPixmapItem(Qg.QPixmap(ImageFile[n])) 36 37 self.scene.addItem(pic_Item) 38 39 self.ui.graphicsView.setScene(self.scene) 40 self.ui.graphicsView.fitInView(self.scene.sceneRect(), Qc.Qt.KeepAspectRatio) 41 42 # //////////////////////////////////////////////////////////////// # 43 def MyFuncBefore(self): 44 global n 45 n = n - 1 46 47 self.view = Qw.QGraphicsView() 48 self.scene = Qw.QGraphicsScene() 49 self.srect = self.view.rect() 50 51 self.scene.clear() 52 pic_Item = Qw.QGraphicsPixmapItem(Qg.QPixmap(ImageFile[n])) 53 self.scene.addItem(pic_Item) 54 55 self.ui.graphicsView.setScene(self.scene) 56 self.ui.graphicsView.fitInView(self.scene.sceneRect(), Qc.Qt.KeepAspectRatio) 57 58 # //////////////////////////////////////////////////////////////// # 59 def MyFuncNext(self): 60 global n 61 n = n + 1 62 63 self.view = Qw.QGraphicsView() 64 self.scene = Qw.QGraphicsScene() 65 self.srect = self.view.rect() 66 67 68 self.scene.clear() 69 pic_Item = Qw.QGraphicsPixmapItem(Qg.QPixmap(ImageFile[n])) 70 self.scene.addItem(pic_Item) 71 72 self.ui.graphicsView.setScene(self.scene) 73 self.ui.graphicsView.fitInView(self.scene.sceneRect(), Qc.Qt.KeepAspectRatio) 74 75 76 77# ########################################################################### # 78# ########################################################################### # 79if __name__ == '__main__': 80 app = Qw.QApplication(sys.argv) 81 wmain = MyForm() 82 wmain.show() 83 sys.exit(app.exec_()) 84
Qt Designerで作成した uiファイルを変換
# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'GUI.ui' # # Created by: PyQt5 UI code generator 5.15.4 # # WARNING: Any manual changes made to this file will be lost when pyuic5 is # run again. Do not edit this file unless you know what you are doing. from PyQt5 import QtCore, QtGui, QtWidgets class Ui_Form(object): def setupUi(self, Form): Form.setObjectName("Form") Form.resize(502, 295) Form.setMinimumSize(QtCore.QSize(0, 0)) Form.setMaximumSize(QtCore.QSize(950, 525)) font = QtGui.QFont() font.setPointSize(14) Form.setFont(font) self.graphicsView = QtWidgets.QGraphicsView(Form) self.graphicsView.setGeometry(QtCore.QRect(10, 30, 320, 240)) font = QtGui.QFont() font.setPointSize(10) self.graphicsView.setFont(font) self.graphicsView.setObjectName("graphicsView") self.pushBtnCheckNext = QtWidgets.QPushButton(Form) self.pushBtnCheckNext.setGeometry(QtCore.QRect(350, 120, 121, 51)) font = QtGui.QFont() font.setPointSize(18) self.pushBtnCheckNext.setFont(font) self.pushBtnCheckNext.setObjectName("pushBtnCheckNext") self.pushBtnCheckBefore = QtWidgets.QPushButton(Form) self.pushBtnCheckBefore.setGeometry(QtCore.QRect(350, 60, 121, 51)) font = QtGui.QFont() font.setPointSize(18) self.pushBtnCheckBefore.setFont(font) self.pushBtnCheckBefore.setObjectName("pushBtnCheckBefore") self.retranslateUi(Form) self.pushBtnCheckBefore.clicked.connect(Form.MyFuncBefore) self.pushBtnCheckNext.clicked.connect(Form.MyFuncNext) QtCore.QMetaObject.connectSlotsByName(Form) def retranslateUi(self, Form): _translate = QtCore.QCoreApplication.translate Form.setWindowTitle(_translate("Form", "Form")) self.pushBtnCheckNext.setText(_translate("Form", "次")) self.pushBtnCheckBefore.setText(_translate("Form", "前")) if __name__ == "__main__": import sys app = QtWidgets.QApplication(sys.argv) Form = QtWidgets.QWidget() ui = Ui_Form() ui.setupUi(Form) Form.show() sys.exit(app.exec_())
試したこと
言語は異なりますが、以下のサイトと同じ状態です。
リンク内容
初学のため知見が浅く、大変申し訳ありませんがアドバイスを頂けないでしょうか。
補足情報(FW/ツールのバージョンなど)
Windows10 21H1 Pro 64bit
Python3.7.3
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/07/14 19:27