gpt4 book ai didi

python - 如何在 PyQt5 中画一条从鼠标到一个点的线?

转载 作者:太空宇宙 更新时间:2023-11-04 02:58:19 25 4
gpt4 key购买 nike

这是我的代码:

import sys
from PyQt5.QtWidgets import (QApplication, QLabel, QWidget)
from PyQt5.QtGui import QPainter, QColor, QPen
from PyQt5.QtCore import Qt

class MouseTracker(QWidget):
distance_from_center = 0
def __init__(self):
super().__init__()
self.initUI()
self.setMouseTracking(True)

def initUI(self):
self.setGeometry(200, 200, 1000, 500)
self.setWindowTitle('Mouse Tracker')
self.label = QLabel(self)
self.label.resize(500, 40)
self.show()

def mouseMoveEvent(self, event):
distance_from_center = round(((event.y() - 250)**2 + (event.x() - 500)**2)**0.5)
self.label.setText('Coordinates: ( %d : %d )' % (event.x(), event.y()) + "Distance from center: " + str(distance_from_center))

q = QPainter() #Painting the line
q.begin(self)
q.drawLine(event.x(), event.y(), 250, 500)
q.end()

def drawPoints(self, qp, x, y):
qp.setPen(Qt.red)
qp.drawPoint(x, y)

app = QApplication(sys.argv)
ex = MouseTracker()
sys.exit(app.exec_())

我想做的是使用以下方法从鼠标位置到小部件中间画一条简单的线:

        q = QPainter()  #Painting the line
q.begin(self)
q.drawLine(event.x(), event.y(), 250, 500)
q.end()

但是当我运行它时,没有一行是可见的。我需要做什么?

最佳答案

你必须实现函数QPaintEvent,在这个函数中你必须画线,另外你必须调用函数update()来更新绘图。

import sys
from PyQt5.QtWidgets import (QApplication, QLabel, QWidget)
from PyQt5.QtGui import QPainter, QColor, QPen
from PyQt5.QtCore import Qt

class MouseTracker(QWidget):
distance_from_center = 0
def __init__(self):
super().__init__()
self.initUI()
self.setMouseTracking(True)

def initUI(self):
self.setGeometry(200, 200, 1000, 500)
self.setWindowTitle('Mouse Tracker')
self.label = QLabel(self)
self.label.resize(500, 40)
self.show()
self.pos = None

def mouseMoveEvent(self, event):
distance_from_center = round(((event.y() - 250)**2 + (event.x() - 500)**2)**0.5)
self.label.setText('Coordinates: ( %d : %d )' % (event.x(), event.y()) + "Distance from center: " + str(distance_from_center))
self.pos = event.pos()
self.update()

def paintEvent(self, event):
if self.pos:
q = QPainter(self)
q.drawLine(self.pos.x(), self.pos.y(), 500, 250)


app = QApplication(sys.argv)
ex = MouseTracker()
sys.exit(app.exec_())

输出:

enter image description here

关于python - 如何在 PyQt5 中画一条从鼠标到一个点的线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41710791/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com