打印

利用VS2017 进行PyQt5 编程。

[复制链接]
6393|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编辑器里输入:
import sys     
from PyQt5 import QtWidgets   #导入QT的界面控件
app = QtWidgets.QApplication(sys.argv)  
widget = QtWidgets.QWidget() #生成一个窗口界面实例 继承QWidget
widget.resize(300, 100)      #设置窗口的大小
widget.setWindowTitle("我的PyQt5")  #设置窗口标题
widget.show()         #显示窗口
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. 选择工具-外部工具,如图的界面,点击添加


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


命令: 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 的界面了。 把你需要的工具拉进来,设计好界面。
设计界面如下:

添加一个信号槽,点击按键退出程序。

点击保存,可以看到项目文件夹下面多了一个 main_form.ui 文件。点击工具--》pyuic5--》确定。 又多了一个main_form.py , 这个就是界面的代码了。
把这个文件加入项目里面。
这个代码如下,全部是自动生成:
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'main_form.ui'
#
# Created by: PyQt5 UI code generator 5.10.1
#
# 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(438, 281)
                self.centralwidget = QtWidgets.QWidget(MainWindow)
                self.centralwidget.setObjectName("centralwidget")
                self.pushButton = QtWidgets.QPushButton(self.centralwidget)
                self.pushButton.setGeometry(QtCore.QRect(140, 100, 121, 51))
                self.pushButton.setObjectName("pushButton")
                MainWindow.setCentralWidget(self.centralwidget)
                self.menubar = QtWidgets.QMenuBar(MainWindow)
                self.menubar.setGeometry(QtCore.QRect(0, 0, 438, 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)
                self.pushButton.clicked.connect(MainWindow.close)
                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
from main_form import Ui_MainWindow  #导入生成的窗口类

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

运行后界面如下:点击按键退出:

这就完成了界面的设计流程。和c#一样的方便。但是结构比c#清晰多了。外部控件也超多。







相关帖子

沙发
gaoyang9992006| | 2018-5-6 17:16 | 只看该作者
是的,非常强大。让我想起了我用的Lua也是,Lua有IPU也是非常容易,用类似的方式就可以实现GUI。

使用特权

评论回复
板凳
hbzjt2011| | 2018-5-6 17:22 | 只看该作者
进化太快了

使用特权

评论回复
地板
zuoyi001| | 2018-6-14 09:39 | 只看该作者
赞一个!!!

使用特权

评论回复
5
gaoyang9992006| | 2018-6-20 11:52 | 只看该作者
如果有一款像VB一样开发图形界面的软件就好了,不知道楼主有没有这方面的消息分享。

使用特权

评论回复
6
qin552011373| | 2018-8-30 17:34 | 只看该作者
有没有最新进展?

使用特权

评论回复
7
yc2168|  楼主 | 2018-9-10 13:37 | 只看该作者
gaoyang9992006 发表于 2018-6-20 11:52
如果有一款像VB一样开发图形界面的软件就好了,不知道楼主有没有这方面的消息分享。 ...

这个不就是图形界面吗?需要配置一下。如果不习惯可以使用eric。 和python是高度融合的。 新版的编辑功能也非常强大了。

使用特权

评论回复
8
a305566| | 2018-10-8 16:57 | 只看该作者

使用特权

评论回复
9
li_mu| | 2018-12-23 14:39 | 只看该作者
看到有人用这个做股票分析软件,好想做k线图比较合适呢

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

16

帖子

3

粉丝