好了,我们开一个新章节,因为我对Gui设计比其它的熟一点,所以我先来开个Gui设计的新坑。在这里说明一下。我们使用的是PyQt5,并不是Python自带的Tkinter。那个我没那么熟,可以说基本不会。这个栏目我们主要是讲PyQt5的基础,至于更多,我觉得大家自己摸索,毕竟难了,我也累,写多了看不懂。好了,栏目介绍完,现在开始说正式的。

首先因为PyQt5是第三方库,如果你直接import,那么就会报错。必须下载,至于怎么下载Python的第三方库,我在基础栏目中的Python库已经说过。大家自行翻阅。(还是说一个简单一点的吧。。。)

在命令提示符/cmd中(Windows系统,Linux和苹果系统抱歉我没用过,请谅解。)
pip install PyQt5

很简单吧,如果报错了,你会看到一大堆红字,如果末尾是…time out,那么就是中断了,多试几次。其它的自行搜索吧,毕竟太多了。我觉得最好还是下载.whl文件。

废话了这么多,我们先来看一个我最近无聊编的实用工具,界面很简陋,毕竟我大概只编了几个小时不到。

import sys,sip
from PyQt5.QtWidgets import QApplication, QWidget,QLabel,QPushButton,QCheckBox, QComboBox,QLineEdit
from PyQt5.QtGui import QFont
from PyQt5.QtCore import Qtclass Exchange_of_weather_degree_units(QWidget):def __init__(self):super().__init__()self.setting()def setting(self):self.unit = Noneself.choice = QComboBox(self)self.choice.addItem('℃')self.choice.addItem('℉')self.choice.activated[str].connect(self.choice_)self.choice.move(50,15)self.number = QLineEdit(self)self.number.setPlaceholderText('输入转化的数值')self.number.move(15,50)self.arrowhead = QLabel(self)self.arrowhead.setText('——————>')self.arrowhead.setFont(QFont('microsoft Yahei', 20))self.arrowhead.move(165,20)self.result = QLabel(self)self.result.setText('                         ')self.result.setFont(QFont('microsoft Yahei', 15))self.result.move(370, 27.5)self.yes = QPushButton('确定',self)self.yes.clicked.connect(self.yes_)self.yes.move(220,50)self.setGeometry(300, 100, 520, 100)self.setWindowTitle('摄氏度与华氏度的转换')self.show()def choice_(self,text):self.unit = textdef yes_(self):try:if self.unit == '℃':result_ = eval(self.number.text()) * 1.8 + 32self.result.setText(str(result_) + '℉')if self.unit == '℉':result_ = round((eval(self.number.text()) - 32) / 1.8,6)self.result.setText(str(result_) + '℃')else:result_ = eval(self.number.text()) * 1.8 + 32self.result.setText(str(result_) + '℃')except:self.result.setText('请输入数字')if __name__ == '__main__':app = QApplication(sys.argv)Ex = Exchange_of_weather_degree_units()sys.exit(app.exec_())

这个是华氏度与摄氏度的一个转换小工具,对我来说挺实用。大家不用懂,就复制过去看看效果就好了。

其实这个里面涉及的知识并不多,所以大家不用怕。因为最基础的PyQt5框架是这样的:

import sys
from PyQt5.QtWidgets import QApplication, QWidget
class Example(QWidget):def __init__(self):super().__init__()self.settings()def settings(self):self.setGeometry(300, 300, 450, 350)self.show()if __name__ == '__main__':app = QApplication(sys.argv)ex = Example()sys.exit(app.exec_())

当然,这只是我觉得的最简模式,其实可以比这更精简。不过长度也差不多这样。所以大家不用害怕。

至于Qt5是什么,大家自行搜索,反正我可以告诉大家,这是一个极为强大与成熟的库,Qt本身其实也是一个工具。如果要,可以加我QQ。

讲了这些,我们现在来分析一下这个框架代码:

sys库是一个标准库:

sys库的作用:查看python解释器信息及传递信息给python解释器。
sys.argv:获取命令行参数列表,第一个元素是程序本身
sys.exit(n):退出Python程序,exit(0)表示正常退出。当参数非0时,会引发一个SystemExit异常,可以在程序中捕获该异常
sys.version:获取Python解释器的版本信息
sys.maxsize:最大的Int值,64位平台是2**63 - 1
sys.path:返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
sys.platform:返回操作系统平台名称
sys.stdin:输入相关
sys.stdout:输出相关
sys.stderr:错误相关
sys.exc_info():返回异常信息三元元组
sys.getdefaultencoding():获取系统当前编码,默认为utf-8
sys.setdefaultencoding():设置系统的默认编码
sys.getfilesystemencoding():获取文件系统使用编码方式,默认是utf-8
sys.modules #以字典的形式返回所有当前Python环境中已经导入的模块
sys.builtin_module_names:返回一个列表,包含所有已经编译到Python解释器里的模块的名字
sys.copyright:当前Python的版权信息
sys.flags:命令行标识状态信息列表。只读。
sys.getrefcount(object):返回对象的引用数量
sys.getrecursionlimit():返回Python最大递归深度,默认1000
sys.getsizeof(object[, default]):返回对象的大小
sys.getswitchinterval():返回线程切换时间间隔,默认0.005秒
sys.setswitchinterval(interval):设置线程切换的时间间隔,单位秒
sys.getwindowsversion():返回当前windwos系统的版本信息
sys.hash_info:返回Python默认的哈希方法的参数
sys.implementation:当前正在运行的Python解释器的具体实现,比如CPython
sys.thread_info:当前线程信息

这些是有一些是我参考的,不过主要是查看PyQt5库本身代码,再翻译解释英文的成果。

然后是解包,这个没问题吧。

然后创建Example库,继承了QWidget。
PyQt5有很多模块,其中QWidget就是一个模块,它包含了一系列创建桌面应用的UI元素。

下面的初始化代码应该没问题吧。
然后就是这个self.setGeometry(300, 300, 450, 350),这个是设置窗口与屏幕左上角的距离与长宽。
这个大家改改数据就懂了。

然后是self.show(),这个是将界面显示出来。
最后是运行,if那一个判断简单来说是这样的:
别的文档调用你的这个库时不会执行if里的代码。
然后app那一行大家就是所有的PyQt5应用必须创建一个应用(Application)对象。sys.argv参数是一个来自命令行的参数列表。Python脚本可以在shell中运行。这是我们用来控制我们应用启动的一种方法。

ex是调用库,然后首先执行__init__的代码,然后__init__又调用了settings,所以直接执行initUI里的程序。最后退出。

我们再改好看一点。

import sys
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5.QtGui import QIcon
class Example(QWidget):def __init__(self):super().__init__()self.settings()def setting(self):self.setWindowTitle(sys.argv[0])#self.setWindowIcon(QIcon('图片名.ico')) 自己加图片self.setGeometry(300, 300, 450, 350)self.show()if __name__ == '__main__':app = QApplication(sys.argv)ex = Example()sys.exit(app.exec_())

我们加了两行,在settings中的第一行,就是设置标题。第二行大家自行加ico图片,这样就会更丰富了。这个方法我就不列出来了,大家自己记住就好。

好了,这是今天的Gui知识,如果大家喜欢,不妨花个五秒,加个关注,点个赞。如果大家有疑惑,可以在评论区询问,伙伴们也可以加我的QQ:3418772261。我会给你很多的Python资源。也可以提供答疑。那么下期再见了,拜拜!

Python PyQt5简介相关推荐

  1. PyQt5快速入门(一)PyQt5简介

    一.PyQt5简介 1.PyQt5简介 PyQt是Qt框架的Python语言实现,由Riverbank Computing开发,是最强大的GUI库之一.PyQt提供了一个设计良好的窗口控件集合,每一个 ...

  2. python -- PyQt5(designer)中文详细教程(一)Qt的基本功能

    在介绍PyQt5中文详细教程前,如有需要安装PyQt5的同学可以在此 PyQt5安装详细教程_M_Q_T的博客-CSDN博客参考安装,里面有详细的安装内容. 下一章内容python -- PyQt5( ...

  3. Hello PyQt5(一)PyQt5简介

    一.PyQt5简介 1.PyQt5简介 PyQt是Qt框架的Python语言实现,由Riverbank Computing开发,是最强大的GUI库之一.PyQt提供了一个设计良好的窗口控件集合,每一个 ...

  4. python PyQt5 QMainWindow类(Qt主窗口框架,主窗口提供了用于构建应用程序用户界面的框架)

    https://doc.qt.io/qtforpython/PySide2/QtWidgets/QMainWindow.html?highlight=qmainwindow#PySide2.QtWid ...

  5. python PyQt5 sender(是发出信号的对象)、receiver(接收信号的对象)、slot(插槽)(是对信号做出反应的方法)

    sender是发出信号的对象.receiver是接收信号的对象.slot(插槽)是对信号做出反应的方法. 参考文章:python PyQt5中文教程☞[第五节]PyQt5事件和信号

  6. python PyQt5 QtWidgets.QAbstractSlider.valueChanged()

    https://doc.qt.io/qtforpython/PySide2/QtWidgets/QAbstractSlider.html?highlight=valuechanged#PySide2. ...

  7. python PyQt5 QtWidgets.QWidget.setLayout()(将布局中的小部件重新父级化,以将窗口作为父级)

    https://doc.qt.io/qtforpython/PySide2/QtWidgets/QWidget.html?highlight=setlayout#PySide2.QtWidgets.P ...

  8. python PyQt5 QLabel()(可以用来显示文字、图片或作为放置一些控件提示信息的容器)

    QLabel对象作为一个占位符可以显示不可编辑的文本或者图片,也可以放一个gif动画,还可以作为其他控件的一个提示标记(如QComboBox下拉列表框.组合下拉框?): 该标签可以放纯文本,链接或者富 ...

  9. python PyQt5教程

    引用文章1:python PyQt5 教程 参考文章2:PyQt5 python官方教程 Qt for Python pyqt5-基础 PyQt5是一套来自Digia的Qt5应用框架和Python的粘 ...

最新文章

  1. 2021全国高校计算机能力挑战赛(初赛)C语言试题四
  2. 中石油训练赛 - 小说(最短路+二分)
  3. android的Service
  4. tensorflow reduce系列函数(tf.reduce_mean, tf.reduce_sum, tf.reduce_prod, tf.reduce_max, tf.reduce_min)
  5. copy 回顾总结:Java中抽象类与抽象方法
  6. 第五章 搭建开发板的测试环境
  7. Linux上screen命令如何安装,Linux screen命令,Linux screen用法,Linux screen简单用法,Linux screen安装...
  8. 记录下qcharts绘制曲线遇到的坑
  9. 项目管理-项目整体计划Excel表格绘制
  10. 通过2048学习自定义view(二) 滑动事件监听 与 事件回调
  11. 驯服烂代码_驯服业力,SauceLabs和Internet Explorer:揭秘之旅
  12. 电子邮件服务的配置和使用
  13. 微信播放在服务器视频无法播放音乐,解决ios微信浏览器中audio和video音乐视频无法自动播放等问题...
  14. 谷歌浏览器不能正常显示
  15. jude 使用学习-2018
  16. 关于 Elasticsearch 429 Too Many Requests 的 排查思考
  17. windows2008服务器sa密码修改,关于SQL Server 2008忘记sa密码修改sa密码的方法图解
  18. JS打开选择本地文件的对话框
  19. 转Ruby on Rails的核心特性是什么
  20. CIO40知识星球—IT人之兄弟连

热门文章

  1. android刷机工具推荐,刷机也能如此轻松 Android一键刷机工具
  2. android 设置布局宽度,Android布局宽度为50%
  3. GNS模拟linux,GNS3模拟器官方版最新版及安装说明
  4. 淘宝,1688,京东店铺所有商品接口分享
  5. 浅析swift optional
  6. clearcase使用小结
  7. 公共艺术与计算机论文题目,优秀公共艺术论文选题 公共艺术论文题目如何定...
  8. 支持向量机原理(一) 线性支持向量机
  9. 百度地图离线API2.0(含示例,可完全断网访问)
  10. String如何截取字符串长度