pyqt5中painter鼠标画线完成后弹出一次界面包含文本“请输入长度:”以及文本框可输入后关闭的代码
时间: 2024-12-17 11:49:32 浏览: 3
PyQt5基本控件使用之消息弹出、用户输入、文件对话框的使用方法
5星 · 资源好评率100%
在PyQt5中,你可以使用`QPainter`来绘制图形,并结合`QInputDialog`来创建一个简单的对话框让用户输入数值。下面是一个简化的示例代码,展示了如何在鼠标画线结束后弹出一个带文本输入框的窗口:
```python
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPainter, QInputDialog, QLineEdit
from PyQt5.QtGui import QPainterPath, QColor, QPen
class MyWidget(QWidget):
def __init__(self):
super().__init__()
self.path = QPainterPath()
self.pen = QPen(QColor('black'), 2) # 设置画笔颜色和宽度
def paintEvent(self, event):
painter = QPainter(self)
painter.drawPath(self.path)
def mouseMoveEvent(self, event):
if not self.path.isEmpty(): # 避免第一次点击就触发绘制
self.path.lineTo(event.pos())
self.update()
def mouseReleaseEvent(self, event):
line_length = None
if not self.path.isEmpty():
self.path.closeSubpath()
text, ok = QInputDialog.getText(self, "请输入长度", "请输入线条长度:")
if ok and text.isdigit():
line_length = int(text)
if line_length is not None:
self画画线(line_length)
self.show_message() # 显示消息并退出
else:
self.update()
def画画线(self, length):
painter = QPainter(self)
painter.setPen(self.pen)
painter.drawPath(self.path)
self.path.clear()
def show_message(self):
QMessageBox.information(self, '信息', '线条已绘制完成,长度为{}。'.format(length))
self.close()
if __name__ == '__main__':
app = QApplication(sys.argv)
widget = MyWidget()
widget.setWindowTitle("鼠标画线")
widget.setGeometry(300, 300, 400, 400)
widget.show()
sys.exit(app.exec_())
阅读全文