利用VS2017 进行PyQt5 编程。

[复制链接]
6945|8
 楼主| yc2168 发表于 2018-5-3 11:01 | 显示全部楼层 |阅读模式
本帖最后由 yc2168 于 2018-5-3 11:05 编辑

以下文字是自己手打,如有错误请提出。本人用C#多年,C#是一门优秀的语言,也做了很多工具。主要是测试和自动化控制。 本人不是专业做上位机的,对C#也只能说是了解,但是也完成了我所有的要求,运行也很稳定。虽然做个项目要到处查资料。,但是Python语言结构清晰,简单易用,让我动了用pyton做上位机的念头。
PyQt 就是Python + QT 的GUI设计。
大家都知道vs编译器的强大。这就不多说了。 qt也是牛X的。Python也是很牛X的。
可以说qt能完成的事,pyqt也能完成。而且pyqt有强大的Python库的支持就能牛X了。
下面说说配置的过程。大家有更好的方案请提出一起交流。
1. 安装 Python3。 这个就不多说了。建议安装32位的,因为64位的打包不能在32位机器上运行。记得把pip勾上。
2. 安装成功后,在cmd窗口安装sip 命令如下: pip install sip
3. 接着安装 PyQt5, 命令如下:pip install PyQt5
   安装好之后就可以用pyqt5编程了。
   可以输入下面代码测试: 直接在Python编辑器里输入:
  1. import sys     
  2. from PyQt5 import QtWidgets   #导入QT的界面控件
  3. app = QtWidgets.QApplication(sys.argv)  
  4. widget = QtWidgets.QWidget() #生成一个窗口界面实例 继承QWidget
  5. widget.resize(300, 100)      #设置窗口的大小
  6. widget.setWindowTitle("我的PyQt5")  #设置窗口标题
  7. widget.show()         #显示窗口
  8. sys.exit(app.exec_()) #循环
运行后可以看到这个窗口,说明安装正常了。

到目前为止可以用PyQt5进行高效编程了。
当然不是所有人的都喜欢用代码写界面,下面就到Qt Designer 出场了。Qt Designer是界面设计软件。是QT的一个功能,可以用Designer设计好界面,然后生成ui文件,转换成py文件,导入pyqt中。里面有了所有窗口的代码。我们只要关心自己的算法就行了。
这些工具都在PyQt5-tools 工具包中,下面我们来安装。在cmd 命令窗口中输入 pip install PyQt5-tools
安装完成后这些文件在Python-Lib-site-packages 文件夹里面。
配置VS2017. 如果只要用pyqt5,那不用配置,因为VS已经做好了。直接可以写。如果要用Qt Designer 辅助设计,就要导入这个工具:
1. 先进入vs的Python界面。 选择Python-》Python 应用程序  新建一个项目。
2. 选择工具-外部工具,如图的界面,点击添加
L3PBJ[MO44E2B(QT9]R{_`F.png

命令处选择: C:\Program Files\Python36\Lib\site-packages\pyqt5-tools\designer.exe
参数:main_form.ui    //意思是每次都生成 mainform.ui 文件。方便修改。
初始目录:$(ItemDir)  //生产在项目文件夹
然后再添加:
0RQQ_F5{W@8HOKBE2YI9]44.png

命令: C:\Program Files\Python36\Scripts\pyuic5.exe
参数:main_form.ui -o main_form.py //把 main_form.ui 生产 main_form.py
初始目录:$(ItemDir)  //生产在项目文件夹

配置完成: 可以在工具栏中看到 PyQt5Designer  和 pyuic5 两个选项了。
点击 PyQt5Designer  - 》确认 --》NewForm--》Main Window-->Create 就可以生产一个From 的界面了。 把你需要的工具拉进来,设计好界面。
设计界面如下:
I{X[@Q2[9VX_HX1dHKI.png
添加一个信号槽,点击按键退出程序。
UVBNTPE]{]5849M2){2POTW.png
点击保存,可以看到项目文件夹下面多了一个 main_form.ui 文件。点击工具--》pyuic5--》确定。 又多了一个main_form.py , 这个就是界面的代码了。
把这个文件加入项目里面。
这个代码如下,全部是自动生成:
  1. # -*- coding: utf-8 -*-

  2. # Form implementation generated from reading ui file 'main_form.ui'
  3. #
  4. # Created by: PyQt5 UI code generator 5.10.1
  5. #
  6. # WARNING! All changes made in this file will be lost!

  7. from PyQt5 import QtCore, QtGui, QtWidgets

  8. class Ui_MainWindow(object):
  9.         def setupUi(self, MainWindow):
  10.                 MainWindow.setObjectName("MainWindow")
  11.                 MainWindow.resize(438, 281)
  12.                 self.centralwidget = QtWidgets.QWidget(MainWindow)
  13.                 self.centralwidget.setObjectName("centralwidget")
  14.                 self.pushButton = QtWidgets.QPushButton(self.centralwidget)
  15.                 self.pushButton.setGeometry(QtCore.QRect(140, 100, 121, 51))
  16.                 self.pushButton.setObjectName("pushButton")
  17.                 MainWindow.setCentralWidget(self.centralwidget)
  18.                 self.menubar = QtWidgets.QMenuBar(MainWindow)
  19.                 self.menubar.setGeometry(QtCore.QRect(0, 0, 438, 23))
  20.                 self.menubar.setObjectName("menubar")
  21.                 MainWindow.setMenuBar(self.menubar)
  22.                 self.statusbar = QtWidgets.QStatusBar(MainWindow)
  23.                 self.statusbar.setObjectName("statusbar")
  24.                 MainWindow.setStatusBar(self.statusbar)

  25.                 self.retranslateUi(MainWindow)
  26.                 self.pushButton.clicked.connect(MainWindow.close)
  27.                 QtCore.QMetaObject.connectSlotsByName(MainWindow)

  28.     def retranslateUi(self, MainWindow):
  29.             _translate = QtCore.QCoreApplication.translate
  30.             MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
  31.             self.pushButton.setText(_translate("MainWindow", "按我退出程序"))

然后在主程序文件里面添加代码
  1. import sys
  2. from PyQt5.QtWidgets import QApplication,QMainWindow
  3. from main_form import Ui_MainWindow  #导入生成的窗口类

  4. #新建一个类来继承生成的窗口,也可以在这里添加关于窗口处理的代码,比如自定义信号等。
  5. class MyMainWindow(QMainWindow, Ui_MainWindow):
  6.         def __init__(self, parent=None):   
  7.                   super(MyMainWindow, self).__init__(parent)
  8.                   self.setupUi(self)
  9.             
  10. #主程序,生成一个窗口实例并运行。
  11. if __name__=="__main__":  
  12.         app = QApplication(sys.argv)  
  13.         myWin = MyMainWindow()  
  14.         myWin.show()  
  15.         sys.exit(app.exec_())  

运行后界面如下:点击按键退出:
H~]Q_1}Z5(HKS]~6W)NBX.png
这就完成了界面的设计流程。和c#一样的方便。但是结构比c#清晰多了。外部控件也超多。







gaoyang9992006 发表于 2018-5-6 17:16 | 显示全部楼层
是的,非常强大。让我想起了我用的Lua也是,Lua有IPU也是非常容易,用类似的方式就可以实现GUI。
hbzjt2011 发表于 2018-5-6 17:22 | 显示全部楼层
进化太快了
zuoyi001 发表于 2018-6-14 09:39 | 显示全部楼层
赞一个!!!
gaoyang9992006 发表于 2018-6-20 11:52 | 显示全部楼层
如果有一款像VB一样开发图形界面的软件就好了,不知道楼主有没有这方面的消息分享。
qin552011373 发表于 2018-8-30 17:34 | 显示全部楼层
有没有最新进展?
 楼主| yc2168 发表于 2018-9-10 13:37 | 显示全部楼层
gaoyang9992006 发表于 2018-6-20 11:52
如果有一款像VB一样开发图形界面的软件就好了,不知道楼主有没有这方面的消息分享。 ...

这个不就是图形界面吗?需要配置一下。如果不习惯可以使用eric。 和python是高度融合的。 新版的编辑功能也非常强大了。
a305566 发表于 2018-10-8 16:57 | 显示全部楼层
li_mu 发表于 2018-12-23 14:39 | 显示全部楼层
看到有人用这个做股票分析软件,好想做k线图比较合适呢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

16

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部