1. 1 不可撤销
  2. 2 小年兽 程嘉敏
  3. 3 手放开 李圣杰
  4. 4 迷人的危险3(翻自 dance flow) FAFA
  5. 5 山楂树之恋 程佳佳
  6. 6 summertime cinnamons / evening cinema
  7. 7 不谓侠(Cover 萧忆情Alex) CRITTY
  8. 8 神武醉相思(翻自 优我女团) 双笙
  9. 9 空山新雨后 音阙诗听 / 锦零
  10. 10 Wonderful U (Demo Version) AGA
  11. 11 广寒宫 丸子呦
  12. 12 陪我看日出 回音哥
  13. 13 春夏秋冬的你 王宇良
  14. 14 世界が终わるまでは… WANDS
  15. 15 多想在平庸的生活拥抱你 隔壁老樊
  16. 16 千禧 徐秉龙
  17. 17 我的一个道姑朋友 双笙
  18. 18 大鱼  (Cover 周深) 双笙
  19. 19 霜雪千年(Cover 洛天依 / 乐正绫) 双笙 / 封茗囧菌
  20. 20 云烟成雨(翻自 房东的猫) 周玥
  21. 21 情深深雨濛濛 杨胖雨
  22. 22 Five Hundred Miles Justin Timberlake / Carey Mulligan / Stark Sands
  23. 23 斑马斑马 房东的猫
  24. 24 See You Again Wiz Khalifa / Charlie Puth
  25. 25 Faded Alan Walker / Iselin Solheim
  26. 26 Natural J.Fla
  27. 27 New Soul Vox Angeli
  28. 28 ハレハレヤ(朗朗晴天)(翻自 v flower) 猫瑾
  29. 29 像鱼 王贰浪
  30. 30 Bye Bye Bye Lovestoned
  31. 31 Blame You 眠 / Lopu$
  32. 32 Believer J.Fla
  33. 33 书信 戴羽彤
  34. 34 柴 鱼 の c a l l i n g【已售】 幸子小姐拜托了
  35. 35 夜空中最亮的星(翻自 逃跑计划) 戴羽彤
  36. 36 慢慢喜欢你 LIve版(翻自 莫文蔚) 戴羽彤
  37. 37 病变(翻自 cubi) 戴羽彤
  38. 38 那女孩对我说 (完整版) Uu
  39. 39 绿色 陈雪凝
  40. 40 月牙湾 LIve版(翻自 F.I.R.) 戴羽彤
夜空中最亮的星(翻自 逃跑计划) - 戴羽彤
00:00 / 04:10

夜空中最亮的星 能否听清

那仰望的人 心底的孤独和叹息

夜空中最亮的星 能否记起

那曾与我同行 消失在风里的身影

我祈祷拥有一颗透明的心灵

和会流泪的眼睛

给我再去相信的勇气

越过谎言去拥抱你

每当我找不到存在的意义

每当我迷失在黑夜里

噢喔喔 夜空中最亮的星

请指引我靠近你

夜空中最亮的星 是否知道

那曾与我同行的身影 如今在哪里

夜空中最亮的星 是否在意

是等太阳先升起 还是意外先来临

我宁愿所有痛苦都留在心底

也不愿忘记你的眼睛

哦 给我再去相信的勇气

哦 越过谎言去拥抱你

每当我找不到存在的意义

每当我迷失在黑夜里

噢喔喔 夜空中最亮的星

请照亮我向前行 哒~

我祈祷拥有一颗透明的心灵

和会流泪的眼睛 哦

给我再去相信的勇气

哦 越过谎言去拥抱你

每当我找不到存在的意义

每当我迷失在黑夜里

噢喔喔 夜空中最亮的星

请照亮我向前行

GUI编程:初探Python GUI——pyqt

初探Python GUI——pyqt

前言

从接触计算机以来,我一直对编写GUI程序有着一种难以言说的感情,从刚开始的易语言,后来用java,再后来了解到electron,虽然没有做出像样的gui软件,但我还是喜欢gui,也说不出来为什么,前几天,在一种机缘巧合之下,了解到pyqt,虽然很早就知道QT,Qt库是目前最强大的库之一,很多智能设备就是用qt开发的应用界面,用它可以开发出特别炫酷的交互界面,而且很多大型的3D软件就是用它开发的,由于对C++不是特别熟悉(其实就是没学过😂),所以也没有用过,但一直有一种在搞事的边缘试探,直到了解了pyqt,我突然觉得GUI又可以搞起来了。

简介

pyqt是QT基于python平台的一种解决方案,python大家应该都了解,特点是构建应用比较快速,开发效率高。百度百科给出的解释是:

PyQt是一个创建GUI应用程序的工具包。它是Python编程语言和Qt库的成功融合。Qt库是目前最强大的库之一。PyQt是由Phil Thompson 开发。

PyQt实现了一个Python模块集。它有超过300类,将近6000个函数和方法。它是一个多平台的工具包,可以运行在所有主要操作系统上,包括UNIX,Windows和Mac。 PyQt采用双许可证,开发人员可以选择GPL和商业许可。在此之前,GPL的版本只能用在Unix上,从PyQt的版本4开始,GPL许可证可用于所有支持的平台。

优势

pyqt也有很多优势,首先它有基于GPL许可证的开源版本,从PyQt的版本4开始,GPL许可证可用于所有支持的平台;另一个优势是,由于基于python,入门相对简单,而且再加上pyqt提供了图形化的设计界面,我们可以在设计器设计好界面,然后转换成python代码,简直不要太爽。

环境搭建

安装python

先去python官网下载最新安装包,这里我选择的是安装包,当然你也可以选择压缩版,下载完直接解压也行。区别就是压缩版需要手动配置环境变量。

配置环境变量

这是我本地的安装目录和环境变量配置,一般安装版会自动设置,如果没有,可以参照设置

配置完后,需要测试下看我们的环境变量设置是否正确,在任意目录打开cmd命令窗口,输入如下命令:

python --version

如果显示类似如下,那基本上你的环境就ok了:

安装pip

pip就是个包管理工具,我们可以通过它管理我们的python模块,安装很简单,我们选择在线安装,在cmd命令窗口中执行如下命令:

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py

这行命令的作用就是下载pip,由于网络原因,下载可能比较慢,耐心等待就好,如果网络问题下载失败,多试几次,如果还不行,可以通过下面的网址去官网下载:

https://pypi.org/project/pip/

下载完成后,我们通过如下命令进行安装:

python get-pip.py

没有错误提示,基本上都可以安装成功,然后我们测试下看是否安装成功:

pip --version

如果如下结果,那安装就ok了

更改pip源

因为pip官方源国内访问比较慢,安装组件超级慢,经常出现失败情况,所以我们要配置国内的镜像源。目前国内的镜像站如下:

(1)阿里云 http://mirrors.aliyun.com/pypi/simple/
(2)豆瓣http://pypi.douban.com/simple/
(3)清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/
(4)中国科学技术大学 http://pypi.mirrors.ustc.edu.cn/simple/
(5)华中科技大学http://pypi.hustunique.com/

首先进入当前用户的用户目录,一般就是,c盘Users下找到你用户名对应的文件夹,比如C:\Users\test\,然后创建一个名为pip的文件夹,在文件夹下创建pip.ini文件,windows下要记得先让自己的文件拓展名可见,最后再添加如下内容:

[global]

index-url = http://pypi.douban.com/simple

[install]

trusted-host=pypi.douban.com

这里我用的是豆瓣的,你也可以改成阿里的镜像地址

安装pyqt5

通过如下命令安装pyqt5,你会发现替换了源之后的pip,下载速度特别给力:

pip install pyqt5

紧接着,我们安装pyqt5的组件,里面包含设计器

pip install pyqt5-tools

这里我推荐上面这种安装方式,不存在兼容性问题,如果通过离线安装的方式,很可能不兼容。

测试pyqt5

我们先创建个小脚本试一下:

from PyQt5 import QtWidgets, QtGui
import sys

app = QtWidgets.QApplication(sys.argv)
window = QtWidgets.QWidget();
window.show()
sys.exit(app.exec_())

运行上面的脚本,如果有如下窗口弹出,那么恭喜你,pyqt5环境已经就位

下来,我们用pycharm来创建项目,做一些简单配置

创建项目

打开pycharm,首先要简单配置下pyqt,然后创建我们的项目。

配置pyqt5

首先打开工具,在External Tools中增加pyqt的两个工具,一个是qtDesigner,也就是我们说的设计器,另一个就是把qt的ui转成py脚本的。

我们先看qtDesginer

参照图片配置即可,需要注意的是pyqt5设计器的路径,很多博客说的是python安装目录下的Lib\site-packages\pyqt5_tools\Qt\bin,但我在实际使用的时候发现并不是,当然更多的原因可能是版本不一样,我这里是pyqt5,上面的配置信息如下:

Program:     D:\software\python\python38\Scripts\pyqt5designer.exe
Working directory:		$ProjectFileDir$

再下来就是ui转py脚本的工具配置:

这里的program配置的是python.exe,也就是在你的python安装目录bin下,其他参数如下:

Argument:    -m PyQt5.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.py
Working directory:	    $FileDir$

创建项目

上面这些配置完成,就可以开始我们的项目了。首先创建一个项目,填写项目相关信息

这里需要注意的是,要勾选上图两项,保证pyqt的包可以正常导入

设计ui

项目右键,选择External Tools下我们刚刚配置的共,打开设计器

然后我们的设计器就启动了,它是这个样子的:

左侧侧是组件区,包括常用的各类组件,中间是设计核心区,右侧就是属性显示,我们先创建个主窗口,然后什么都不做,然后输入文件名保存。

ui转为py

如果配置没有问题,我们的ui文件默认是在我们项目根目录的,我们直接选中要转换的ui,右键选择我们配置好的转换工具。

不出意外,我们会发现项目根目录多了一个和UI同名的py文件,但是这个文件并不能直接执行,我们先看下文件内部吧:

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'mainWindow.ui'
#
# Created by: PyQt5 UI code generator 5.14.2
#
# WARNING! All changes made in this file will be lost!


from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 600)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(290, 140, 121, 51))
        self.pushButton.setObjectName("pushButton")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 23))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.pushButton.setText(_translate("MainWindow", "确定"))

然后我们创建一个新的脚本,来启动这个窗口:

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow

import mainWindow

if __name__ == '__main__':
    app = QApplication(sys.argv)
    MainWindow = QMainWindow()
    ui = mainWindow.Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

如果你的窗口类名和我的不一致,把上面的脚本改成和你的对应的,然后双击运行,一个新的窗口出来了:

因为我这里的示例加了一个按钮,所以他可能和你的不一样,不过没关系,能正常运行就好。

到这里,我们本次的内容就结束了,我们在这里总结下。

总结

今天我们主要探讨了如何使用pyqt开发一个gui应用,我们从python安装,环境变量配置,到pyqt5的安装、配置,以及pycharm集成pyqt5,详细演示了一个pyqt GUI应用的设计开发过程,虽然代码不太多,有用的内容也没多少,但还是希望有帮到你,哪怕是给了你学习python的动力,或者让你发现了编程的乐趣,那也是值得的。当然,对我来说,能够将我所了解和知道的和你分享,解决你的问题,这就很有趣……

posted @ 2020-05-30 11:03  云中志  阅读(1782)  评论(0编辑  收藏  举报