本帖最后由 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#清晰多了。外部控件也超多。
|