最近关于PyQt5窗体画图工具的总结

起因:

最近接手了一个小项目,需要用PyQt5画折线动图

过程:

主要探索过程分以下几步:

1.首先上网找关于PyQt5的知识,以及教程帖子,其中一个写的比较好的教程如下:

https://github.com/maicss/PyQt5-Chinese-tutoral

2.开始画图了。用什么画呢?先尝试了QPainter

from PyQt5.QtCore import QPoint

但是这个东西比较蛋疼,他是真正的“描点作图,动手画图”,你要用具体的坐标秒点,程序只负责给你把点连起来,但是坐标要你自己自己算!!(最左上方是0,0,向右是x轴增加,向下是y轴增加)而且坐标轴也要你自己画,坐标也要你自己算上去,可能是我的方法不对,但是上网找了好多教程都是这么画的,真的很费劲,而我的项目要画八个动图……很费劲。

如果想学的话可以看这个:https://blog.csdn.net/TemetNosce/article/details/78025784?locationNum=8&fps=1

如果有侵权联系我我马上删除~~

画好之后的效果是这样的:

简直不要太丑……又丑又简陋……关键这个玩意不是一个空间,也不能放进控件里,这样的话是无法布局的,比如无法设置自动适应窗口大小,还没发加其他控件,这是最气的……

3.于是,我们为了交工,用这个应付了一下,然后又推倒重来,先把这次的成果展示一下:

感觉界面上提升了一个档次有木有!?而且这个可以放进控件里,可以进行布局,这样就太好了,就达到了下面的效果:

到这里我就比较满足了,(毕竟只学了几天就上手画图……真的很蛋疼)

那么重点来了,这是用的什么画图的呢?是pyqtgraph。

在这里再推荐一个关于画图的网站:https://zmister.com/archives/219.html

写的也挺好的,很适合入门,重要的是这个pyqtgraph不需要你关心坐标什么的,你就把数据传过去,它负责自动适应,这就很舒服了!可以说是专门用来画图的。关于他,如果你安装了这个包,你就可以打开他的教程文档:用命令行定位到python.exe所在的目录,因为我是用的anaconda,所以,就直接在anaconda prompt命令行里输入python -m pyqtgraph.examples就可以打开一个像下面这样的文档:

点击run example就可以预览效果。简直是神器!!至此我们的工作就很方便的进行了下去。

4.文章中引用了很多网站的文章,如有侵犯,请联系我,进行删除。如果觉得小编哪里写的不对,欢迎提意见!~

PyQt5是一个强大的GUI库,可以用它来开发各种桌面应用,包括画图工具。下面是一个简单的PyQt5画图工具的示例: ```python import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QAction, QFileDialog from PyQt5.QtGui import QIcon, QPainter, QColor, QPen from PyQt5.QtCore import Qt, QPoint class DrawingApp(QMainWindow): def __init__(self): super().__init__() self.setGeometry(100, 100, 800, 600) self.setWindowTitle("Drawing App") self.image = QImage(self.size(), QImage.Format_RGB32) self.image.fill(Qt.white) self.drawing = False self.last_point = QPoint() # Create the menu bar menu_bar = self.menuBar() file_menu = menu_bar.addMenu("File") # Create the actions for the menu bar save_action = QAction("Save", self) save_action.setShortcut("Ctrl+S") save_action.triggered.connect(self.save_image) clear_action = QAction("Clear", self) clear_action.setShortcut("Ctrl+C") clear_action.triggered.connect(self.clear_image) # Add the actions to the menu bar file_menu.addAction(save_action) file_menu.addAction(clear_action) def paintEvent(self, event): painter = QPainter(self) painter.drawImage(self.rect(), self.image, self.image.rect()) def mousePressEvent(self, event): if event.button() == Qt.LeftButton: self.drawing = True self.last_point = event.pos() def mouseMoveEvent(self, event): if event.buttons() == Qt.LeftButton and self.drawing: painter = QPainter(self.image) painter.setPen(QPen(Qt.black, 2, Qt.SolidLine)) painter.drawLine(self.last_point, event.pos()) self.last_point = event.pos() self.update() def mouseReleaseEvent(self, event): if event.button() == Qt.LeftButton and self.drawing: self.drawing = False def save_image(self): file_name, _ = QFileDialog.getSaveFileName(self, "Save Image", "", "PNG(*.png);;JPEG(*.jpg *.jpeg)") if file_name: self.image.save(file_name) def clear_image(self): self.image.fill(Qt.white) self.update() if __name__ == "__main__": app = QApplication(sys.argv) window = DrawingApp() window.show() app.exec_() ``` 这个程序创建了一个带有菜单栏的窗口。通过菜单栏,用户可以保存或清除画布上的内容。用户可以使用鼠标在画布上绘制任意图形,程序使用QImage来保存绘制的内容。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CtrlZ1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值