用 Python 写桌面图形程序的小伙伴都有一个感觉:太难了!
真的是太难了!这个难不是说框架多难,开发多难,而是可供参考的资料太少了。一方面是官方文档的缺失,一方面是中文文档的缺失,还有一方面则是示例的缺失。
导致每一个使用 Python 进行桌面图形程序开发的小伙伴,几乎都是摸着石头踩着坑成长起来的。
州的先生从几年前开始用 Python 图形程序,期间也是踩过了很多坑,不断地翻外文书籍和资料,慢慢把一些坑给填了。
期间也是陆陆续续分享了很多开发教程和实战教程,比如:
- 《Python GUI教程》系列教程;
- 《Python 图形界面美化实战教程》;
- 《PyQt5 制作 TIM 登录界面》;
- 《Python 图形界面程序实现版本检测和更新》;
- 《文件内容搜索器》;
- 《动态股票K线图》;
等等。
基于此,也积累了很多适合于初学者参考和学习的程序代码。其中最受欢迎的,当属 PyQt5 图形美化教程这篇文章了。
之前只是对这篇文章中涉及到的图片素材进行了提供,至于源码,都让小伙伴们自行根据文章中的代码块进行组织。
虽然不是很难,但是很多初学者依然是摸不着头脑。
索性将素材和代码都开源出来,方便初学者掌握、学习、借鉴和参考。
其中,qt_ui.py
就是代码主文件,部分内容如下所示:
# 重写三个方法使我们的Example窗口支持拖动,上面参数window就是拖动对象
def mousePressEvent(self, event): # 鼠标长按事件
if event.button() == QtCore.Qt.LeftButton:
self.m_drag = True
self.m_DragPosition = event.globalPos() - self.pos()
event.accept()
self.setCursor(QtGui.QCursor(QtCore.Qt.OpenHandCursor))
def mouseMoveEvent(self, QMouseEvent): # 鼠标移动事件
if QtCore.Qt.LeftButton and self.m_drag:
self.move(QMouseEvent.globalPos() - self.m_DragPosition)
QMouseEvent.accept()
def mouseReleaseEvent(self, QMouseEvent): # 鼠标释放事件
self.m_drag = False
self.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor))
def paintEvent(self, ev): # 重绘窗口边框线条
painter = QtGui.QPainter(self)
painter.begin(self)
gradient = QtGui.QLinearGradient(QtCore.QRectF(self.rect()).topLeft(), QtCore.QRectF(self.rect()).bottomLeft())
# gradient.setColorAt(0.0, QtCore.Qt.black)
gradient.setColorAt(0.5, QtCore.Qt.darkGray)
# gradient.setColorAt(0.7, QtCore.Qt.)
painter.setRenderHint(QtGui.QPainter.Antialiasing)
painter.setBrush(gradient)
painter.setPen(QtCore.Qt.transparent)
painter.drawRoundedRect(self.rect(), 10.0, 10.0)
painter.end()
其余的都是程序内使用到的图片素材。
目前,代码开源在了州的先生在 Gitee 创建的仓库python-gui
中:
图形界面美化的代码位于example
目录中,这个目录后续将会持续开源一些 Python 图形界面程序的实例代码;然后docs
目录中后续将会开源一些 Python 图形界面程序开发的方法、技巧、教程等等。
同时,也欢迎大家贡献自己的代码、教程到仓库,让我们一起,为 Python 图形界面开发这一细分领域的推广、普及和门槛的降低,贡献自己的一份力量。
仓库地址:https://gitee.com/zmister/python-gui