我不知道如何单击并在用户加载的图片上绘制一个矩形。我发现了一些我试图遵循的例子,但似乎没有任何效果,我不确定为什么或如何着手修复它。在
我添加了一些断点,但它似乎没有进入mouseMoveEvent
函数,但我不确定原因。任何帮助都将不胜感激。在
我想要什么
我希望能够单击并拖动加载到QGraphics
中的图片,并让它绘制一个框,然后在状态栏中输出矩形两点的X和Y坐标。我也希望矩形停留在那里,直到用户第二次点击图片。在
我发现的例子
当前代码
class MainWindow(QMainWindow, Ui_MainWindow):
def __init__(self, *args, **kwargs):
QMainWindow.__init__(self, *args, **kwargs)
self.setupUi(self)
self.setUpMainUiFunction()
def setUpMainUiFunction(self):
self.actionOpen.triggered.connect(self.OpenDialog)
self.Button_LoadPhoto.clicked.connect(self.OpenDialog)
open = QAction(QIcon("icons/open.bmp"), "open", self)
save = QAction(QIcon("icons/save.bmp"), "save", self)
NormalCursor = QAction(QIcon("icons/cursor-normal.png"), "NormalCursor", self)
CrosshairCursor = QAction(QIcon("icons/crosshair.png"), "CrosshairCursor", self)
self.TopToolBar.addAction(open)
self.TopToolBar.addAction(save)
self.LeftToolBar.addAction(NormalCursor)
self.LeftToolBar.addAction(CrosshairCursor)
# self.TopToolBar.actionTriggered[QAction].connect(self.toolbtnpressed)
def OpenDialog(self):
options = QFileDialog.Options()
options |= QFileDialog.DontUseNativeDialog
PicturePath = QStandardPaths.standardLocations(QStandardPaths.PicturesLocation)[0]
filenames, _ = QFileDialog.getOpenFileNames(self, "Open File", PicturePath, "JPEG File (*.png)", options=options)
for filename in filenames:
pixmap = QPixmap(filename)
self.showPicture(pixmap)
self.statusbar.showMessage("Successfully Loaded: {}".format(filename))
def showPicture(self, picture):
sub = QMdiSubWindow(self)
loadPicture = LoadPicture(picture, sub)
sub.setWidget(loadPicture)
sub.setObjectName("Load_Picture_window")
sub.setWindowTitle("New Photo")
self.mdiArea.addSubWindow(sub)
sub.show()
sub.resize(picture.size())
loadPicture.log.MousePixmapSignal.connect(self.updatePixel)
def updatePixel(self, point, color):
self.UserInput_PixelValue_X.setText("{}".format(point.x()))
self.UserInput_PixelValue_Y.setText("{}".format(point.y()))
self.UserInput_PixelValue_R.setText("{}".format(color.red()))
self.UserInput_PixelValue_G.setText("{}".format(color.green()))
self.UserInput_PixelValue_B.setText("{}".format(color.blue()))
这是在一个seprate文件中。在
^{pr2}$
为了实现此功能,我们必须重写QGraphicsView的mouseMoveEvent、mousePressEvent、mouseReleaseEvent方法,为此我们创建以下文件:
QGraphicsView.py
此类必须在GraphicsArea中使用_图形用户界面.py为此,我们更改了以下内容:
^{pr2}$收件人:
初始类使用一个QRubberBand来更新它的几何结构,当你想要左上角的位置时,右下角我们发出一个由相关QRect发送的信号,这个信号连接到一个插槽。在
相关问题 更多 >
编程相关推荐