ITPub博客

首页 > 应用开发 > Python > Python PyQt5简介

Python PyQt5简介

原创 Python 作者:ckxllf 时间:2020-04-02 14:56:20 0 删除 编辑

  在这里说明一下。我们使用的是PyQt5,并不是Python自带的Tkinter。那个我没那么熟,可以说基本不会。这个栏目我们主要是讲PyQt5的基础,至于更多,我觉得大家自己摸索,毕竟难了,好了,现在开始说正式的。

  首先因为PyQt5是第三方库,如果你直接import,那么就会报错。必须下载

  在命令提示符/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 Qt

  class Exchange_of_weather_degree_units(QWidget):

  def __init__(self):

  super().__init__()

  self.setting()

  def setting(self):

  self.unit = None

  self.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 = text

  def yes_(self):

  try:

  if self.unit == '℃':

  result_ = eval(self.number.text()) * 1.8 + 32

  self.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 + 32

  self.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异常,可以在程序中捕获该异常 郑州哪家人流医院好 http://www.gz020zj.com/

  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图片,这样就会更丰富了。这个方法我就不列出来了,大家自己记住就好。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69945560/viewspace-2684156/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-08-16

  • 博文量
    204
  • 访问量
    262633