python pyqt鼠标十字丝辅助线
时间: 2023-10-30 07:03:24 浏览: 79
在使用PyQt开发GUI应用程序时,可以使用QPainter来绘制辅助线。下面是一个示例代码,展示了如何在鼠标移动时绘制十字丝辅助线:
```python
import sys
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5.QtGui import QPainter, QColor
from PyQt5.QtCore import Qt
class CrosshairWidget(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setGeometry(100, 100, 400, 300)
self.setWindowTitle('Crosshair Widget')
self.setMouseTracking(True)
def paintEvent(self, event):
painter = QPainter(self)
painter.setRenderHint(QPainter.Antialiasing)
# 绘制横向辅助线
painter.setPen(QColor(200, 200, 200))
painter.drawLine(0, self.height() // 2, self.width(), self.height() // 2)
# 绘制纵向辅助线
painter.setPen(QColor(200, 200, 200))
painter.drawLine(self.width() // 2, 0, self.width() // 2, self.height())
# 绘制鼠标位置的十字丝
if hasattr(self, 'mouse_pos'):
painter.setPen(QColor(255, 0, 0))
painter.drawLine(0, self.mouse_pos.y(), self.width(), self.mouse_pos.y())
painter.drawLine(self.mouse_pos.x(), 0, self.mouse_pos.x(), self.height())
def mouseMoveEvent(self, event):
self.mouse_pos = event.pos()
self.update()
if __name__ == '__main__':
app = QApplication(sys.argv)
widget = CrosshairWidget()
widget.show()
sys.exit(app.exec_())
```
在这个示例中,我们创建了一个名为`CrosshairWidget`的自定义小部件,继承自`QWidget`。我们重写了`paintEvent`方法来绘制辅助线,并且设置了`setMouseTracking(True)`来捕获鼠标移动事件。当鼠标移动时,我们会获取当前鼠标位置并更新小部件的绘制。绘制鼠标位置的十字丝使用红色。
你可以将这段代码保存为一个.py文件并运行它,你会看到一个带有十字丝辅助线的窗口。当你移动鼠标时,十字丝将会跟随鼠标位置而移动。
希望对你有所帮助!如有任何问题,请随时提问。