Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在PyQt5上正确设置PixMap缩放?_Python_Qt_Pyqt_Pyqt4_Pyqt5 - Fatal编程技术网

Python 如何在PyQt5上正确设置PixMap缩放?

Python 如何在PyQt5上正确设置PixMap缩放?,python,qt,pyqt,pyqt4,pyqt5,Python,Qt,Pyqt,Pyqt4,Pyqt5,我是Pyqt的新手,我正在尝试创建一个UI,在给定像素位置时,在图像(QLabel)上打印一个圆(使用QPaint)。对于测试,我使用鼠标跟踪事件,但我想我在调整图像或标签大小方面有问题。下面是我的实现中的图像: 结果: 看看指针和圆圈的位置。这就是我想要解决的问题 下面您可以看到代码(我正在使用PIL(加载图像)和PyQt5): 有人能帮我吗 问候, Gabriel:D您可以创建一个自定义小部件来执行此任务,而不是使用QLabel,如下所示: class Stadium(QWidget):

我是Pyqt的新手,我正在尝试创建一个UI,在给定像素位置时,在图像(QLabel)上打印一个圆(使用QPaint)。对于测试,我使用鼠标跟踪事件,但我想我在调整图像或标签大小方面有问题。下面是我的实现中的图像:

结果:

看看指针和圆圈的位置。这就是我想要解决的问题

下面您可以看到代码(我正在使用PIL(加载图像)和PyQt5):

有人能帮我吗

问候,


Gabriel:D

您可以创建一个自定义小部件来执行此任务,而不是使用
QLabel
,如下所示:

class Stadium(QWidget):
    def __init__(self, pixmap, parent=None):
        QWidget.__init__(self, parent=parent)
        self.pixmap = pixmap
        self.pos = None
        self.setMouseTracking(True)

    def paintEvent(self, event):
        painter = QPainter(self)
        painter.drawPixmap(self.rect(), self.pixmap)
        painter.setPen(QPen(Qt.red, 15, Qt.SolidLine))
        if self.pos:
            painter.drawEllipse(self.pos, 15, 15)

    def mouseMoveEvent(self, event):
        self.pos = event.pos()
        self.update()
例如:

class Widget(QWidget):
    def __init__(self, parent=None):
        QWidget.__init__(self, parent=parent)
        self.setLayout(QVBoxLayout())
        label = Stadium(QPixmap("475776182987.png"))
        self.layout().addWidget(label)
        self.resize(640, 480)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = Widget()
    w.show()
    sys.exit(app.exec_())
截图:


您为什么使用PIL?您的问题是什么?您想要得到什么?PIL不是必需的。我可以更改pixmap_image=QtGui.QPixmap(“Images/Quart_top_View_draw.jpg”)行使用PIL的位置。我需要的是在我的指针所在的地方画一个圆圈。我想体育场的图像是QLabel,对吗?是的,你说得对。当我移动鼠标时,我得到了他在QLabel上的位置。然后我在图像上画了一个圆,使用鼠标跟踪得到的像素,但不匹配(指针位置与图像上的圆不同)。当我最大化UI时,差异会变得更大。我想这是规模问题,但我不知道怎么解决。嗨,艾伦斯。你的答案很好。我在主窗口中添加QWidget。非常感谢。你好@eyllanesc。可以保持图像大小的比例吗?如果是,您能帮助我吗?如果标签的关系与您要显示的图像的关系不匹配?例如,如果我现在调整主窗口的大小,请按照它调整图像。我的目标是,如果图像是400x400的正方形,我只增加主窗口的垂直尺寸,图像不能改变,因为必须保持纵横比。我不明白你的意思,请解释清楚
class Widget(QWidget):
    def __init__(self, parent=None):
        QWidget.__init__(self, parent=parent)
        self.setLayout(QVBoxLayout())
        label = Stadium(QPixmap("475776182987.png"))
        self.layout().addWidget(label)
        self.resize(640, 480)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = Widget()
    w.show()
    sys.exit(app.exec_())