PyQt를 사용하여 간단한 프로그램을 Python으로 작성하고 싶습니다.PyQt : QGraphicsView의 마우스 이벤트
은 내가 QGraphicsScene을하고 난 다음을 수행 할 싶습니다 발생 지점에 대한
- : 2 개 개의 RadioButtons를를 사용하는 옵션이 있습니다. 이렇게하면 누군가가 장면을 클릭하면 타원이 나타납니다.
- 포인트를 골라줍니다. 이 방법은 포인트를 클릭하면 선택한 포인트가 반환됩니다.
필자는 PyQt와 GUI 프로그래밍에서 새로운 기능을 제공합니다. 내 주요 문제는 Qt에서 마우스 이벤트가 어떻게 작동 하는지를 이해하지 못한다는 것입니다. 누군가가 내게 마우스 이벤트의 기본 사항을 설명 할 수있을 정도로 친절하고 인내심이 있었고 위에서 설명한 문제에 대한 몇 가지 조언을 주신다면 매우 감사하게 생각합니다.
문제를 시각화하기 위해 사진도 첨부합니다.
나는이 문제를 해결하려고 애썼다. 위젯을 배치하기 위해 Qt Designer를 사용하고 SimpleWindow라는 하위 클래스를 만들었습니다.
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(538, 269)
self.graphicsView = QtWidgets.QGraphicsView(Dialog)
self.graphicsView.setGeometry(QtCore.QRect(130, 10, 371, 221))
self.graphicsView.setObjectName("graphicsView")
self.radioButton = QtWidgets.QRadioButton(Dialog)
self.radioButton.setGeometry(QtCore.QRect(20, 30, 82, 31))
self.radioButton.setObjectName("radioButton")
self.radioButton_2 = QtWidgets.QRadioButton(Dialog)
self.radioButton_2.setGeometry(QtCore.QRect(20, 80, 82, 17))
self.radioButton_2.setObjectName("radioButton_2")
self.retranslateUi(Dialog)
QtCore.QMetaObject.connectSlotsByName(Dialog)
def retranslateUi(self, Dialog):
_translate = QtCore.QCoreApplication.translate
Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
self.radioButton.setText(_translate("Dialog", "Generate"))
self.radioButton_2.setText(_translate("Dialog", "Select"))
감사합니다 :
import sys
from PyQt5 import QtCore, QtWidgets
from PyQt5.QtGui import QPen, QBrush
from PyQt5.QtWidgets import QGraphicsScene
import points
class SimpleWindow(QtWidgets.QMainWindow, points.Ui_Dialog):
def __init__(self, parent=None):
super(SimpleWindow, self).__init__(parent)
self.setupUi(self)
self.graphicsView.scene = QGraphicsScene()
self.graphicsView.setScene(self.graphicsView.scene)
self.graphicsView.setAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignTop)
self.graphicsView.mousePressEvent = self.pixelSelect
def pixelSelect(self, event):
pen = QPen(QtCore.Qt.black)
brush = QBrush(QtCore.Qt.black)
x = event.x()
y = event.y()
if self.radioButton.isChecked():
print(x, y)
self.graphicsView.scene.addEllipse(x, y, 4, 4, pen, brush)
if self.radioButton_2.isChecked():
print(x, y)
app = QtWidgets.QApplication(sys.argv)
form = SimpleWindow()
form.show()
app.exec_()
이
는 디자이너에 의해 생성 된 클래스입니다.
* 선택한 점이 무엇을 의미합니까? – eyllanesc
좌표를 표시하면 충분합니다. –
문제를 해결하고 시도했을 때의 문제를 알려주기를 권장합니다. 이 주제에는 인터넷에 관한 많은 정보가 있습니다. 바로 여기에 있습니다. – eyllanesc