程序人生
PyQt5+Eric6+Python3环境搭建
作者:邵波涛    时间:2016-12-14 浏览量:268

PyQT5环境搭建过程:

笔者环境windows7+Python3.5 64位 ,且Python目录及Scripts目录已加值环境变量Path中。

1、安装PyQt5

pip3 install PyQt5

完成PyQT5后使用import PyQt5测试是否安装成功,因为该库中不含有GUI可视化设计工具designer,因此还需要安装GUI设计工具;

2、安装designer工具

pip3 install PyQt5-tools

安装完成后在python目录下Lib\site-packages\pyqt5-tools目录内就可以使用designer.exe进行GUI设计和编译

3、Eric工具可以很方便的调用这个工具和方便项目管理,因此可以在Eric6地址下载最新版Eric6,英文不太好的可以顺便下载eric6-i18n-zh_CN-xxx文件用来汉化。下载完成后解压Eric6后执行里面的install.py文件进行安装,安装完成后在Python目录下的Scripts文件夹下可以见到eric6.bat,运行即可,汉化版的安装文件位install-i18n.py。

4、往往安装Eric6时会出错,提示需要QScintilla库,仍旧使用pip安装,完成后在执行第三步即可

pip3 install QScintilla

下面来个简单例子:一个简单的加法计算器

使用eric调用的designer设计如图窗体,控件lineEdit、LineEdit_2、label、pushButton,完成后编译窗体生成窗体UI的Ui_hello.py文件

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

# Form implementation generated from reading ui file 'D:\e6pyqt5\hello.ui'
#
# Created by: PyQt5 UI code generator 5.7
#
# WARNING! All changes made in this file will be lost!

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_Dialog(object):
    def setupUi(self, Dialog):
        Dialog.setObjectName("Dialog")
        Dialog.resize(311, 129)
        Dialog.setSizeGripEnabled(True)
        self.lineEdit = QtWidgets.QLineEdit(Dialog)
        self.lineEdit.setGeometry(QtCore.QRect(30, 20, 113, 20))
        self.lineEdit.setObjectName("lineEdit")
        self.lineEdit_2 = QtWidgets.QLineEdit(Dialog)
        self.lineEdit_2.setGeometry(QtCore.QRect(170, 20, 113, 20))
        self.lineEdit_2.setObjectName("lineEdit_2")
        self.label = QtWidgets.QLabel(Dialog)
        self.label.setGeometry(QtCore.QRect(130, 60, 54, 12))
        self.label.setText("")
        self.label.setObjectName("label")
        self.pushButton = QtWidgets.QPushButton(Dialog)
        self.pushButton.setGeometry(QtCore.QRect(120, 90, 75, 23))
        self.pushButton.setObjectName("pushButton")

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

    def retranslateUi(self, Dialog):
        _translate = QtCore.QCoreApplication.translate
        Dialog.setWindowTitle(_translate("Dialog", "计算加法"))
        self.pushButton.setText(_translate("Dialog", "计算"))


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    Dialog = QtWidgets.QDialog()
    ui = Ui_Dialog()
    ui.setupUi(Dialog)
    Dialog.show()
    sys.exit(app.exec_())

然后生成窗体代码,生成时选择创建pushButton的click信号,代码如下:

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

"""
Module implementing hello.
"""

from PyQt5.QtCore import pyqtSlot
from PyQt5.QtWidgets import QDialog

from .Ui_hello import Ui_Dialog


class hello(QDialog, Ui_Dialog):
    """
    Class documentation goes here.
    """
    def __init__(self, parent=None):
        """
        Constructor
        
        @param parent reference to the parent widget
        @type QWidget
        """
        super(hello, self).__init__(parent)
        self.setupUi(self)
    
    @pyqtSlot()
    def on_pushButton_clicked(self):
        """
        Slot documentation goes here.
        """
        # TODO: not implemented yet
        raise NotImplementedError

以上代码正常使用时需要修改

1、首先去掉导入时的.号

2、增加main函数及导入文件

3、为click信号槽函数完成功能代码

改后如下:

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

"""
Module implementing hello.
"""
import sys
from PyQt5.QtCore import pyqtSlot
from PyQt5.QtWidgets import QDialog, QApplication

from Ui_hello import Ui_Dialog


class hello(QDialog, Ui_Dialog):
    """
    Class documentation goes here.
    """
    def __init__(self, parent=None):
        """
        Constructor
        
        @param parent reference to the parent widget
        @type QWidget
        """
        super(hello, self).__init__(parent)
        self.setupUi(self)
    
    @pyqtSlot()
    def on_pushButton_clicked(self):
        """
        Slot documentation goes here.
        """
        # TODO: not implemented yet
        self.label.setText(str(int(self.lineEdit.text())+int(self.lineEdit_2.text())))
if __name__ == "__main__":    
    app = QApplication(sys.argv)
    dlg = hello()     
    dlg.show()
    sys.exit(app.exec_())


发言请留称呼=>
本文留言
共有 0 条留言
扫一扫,手机浏览网站
友情链接
申请链接