PyQt5を使って画像の表示をさせたのですが、マウスクリックで画像のピクセル座標を表示できるようにしたいです
該当のソースコード
Python
1import sys 2import os 3from PyQt5.QtWidgets import * 4from PyQt5.QtGui import * 5from PyQt5.QtCore import * 6 7text_dir = os.getcwd() 8 9class Example(QDialog): 10 11 def __init__(self): 12 super().__init__() 13 self.initUI() 14 15 def initUI(self): 16 self.setWindowTitle("hoge") 17 self.resize(600, 600) 18 self.link = "" 19 self.view = QGraphicsView() 20 self.view.setMouseTracking(True) 21 self.scene = QGraphicsScene(self.view) 22 self.srect = self.view.rect() 23 self.btn = QPushButton("パスを選択...", self) 24 self.btn.clicked.connect(self.ShowDialog) 25 self.view.installEventFilter(self) 26 27 layout = QGridLayout() 28 layout.setSpacing(10) 29 layout.addWidget(self.view,2,0,1,1) 30 layout.addWidget(self.btn,1,0) 31 32 self.setLayout(layout) 33 34 self.move(300, 200) 35 self.show() 36 37 def ShowDialog(self): 38 if self.link != "": 39 text = self.link 40 else: 41 text = text_dir 42 fname = QFileDialog.getOpenFileName(self, 'Open file', text,"画像ファイル(*.jpg)") 43 self.link = fname[0] 44 pic_item = QGraphicsPixmapItem(QPixmap(fname[0])) 45 self.scene.addItem(pic_item) 46 self.view.setScene(self.scene) 47 48 def eventFilter(self, source, event): 49 if event.type() == QEvent.MouseButtonPress and source is self.view: 50 if event.button() == Qt.LeftButton: 51 pos = event.pos() 52 QMessageBox.warning(self, "Message", str(pos.x())+"," + str(pos.y()), QMessageBox.Ok, QMessageBox.Ok) 53 return QWidget.eventFilter(self,source,event) 54 55 56 57 58if __name__ == '__main__': 59 60 app = QApplication(sys.argv) 61 ex = Example() 62 sys.exit(app.exec_())
試したこと
現在のコードでは、マウスの絶対位置は表示できるのですが、スクロールバーが発生した時にスクロール後のピクセル座標が表示できません
補足情報(FW/ツールのバージョンなど)
PyQt5
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/03/22 03:13
2019/03/22 04:28 編集
2019/03/22 06:19