PyCharm环境基于PyQt5开发python上位机

目录

前言:

一、pycharm新建工程

1、打开 pycharm软件,新建工程

二、配置UI界面

1、新建UI界面

1)创建 Main Window

2)拖动控件到 MainWindow 中

3)设置信号与槽

4)ctrl+S 保存ui文件

2、将ui文件转化成py文件

三、修改python代码

1、新建 test1.py 文件

2、新建main.py代码

3、运行程序

四、生成exe可执行程序

问题及解决方法:


前言:

        上篇文章已经介绍了如何搭建PyCharm环境,本文主要介绍怎么在PyCharm环境下进行python开发上位机。

一、pycharm新建工程


我用的python环境为python3.7

1、打开 pycharm软件,新建工程


pycharm新建工程,设置工程名project1

新建工程后,project1中自动生成了main.py(main.py为工具自动生成的例子),界面如下:

开发上位机主要依赖这3个工具

  • Qt Designer 用来设计UI;
  • PyUIC 用来将设计好的.ui文件转换为Python代码;
  • pyinstaller 在Windows上使用打包成.exe可执行文件;
  • 环境搭建参考链接:python开发上位机 – PyCharm环境搭建、安装PyQt5及工具-CSDN博客

    二、配置UI界面


    1、新建UI界面


    点击 Tool -> External Tools -> Qt Designer,打开qt designer工具

    1)创建 Main Window


    左边是UI控件菜单,右边是属性

    2)拖动控件到 MainWindow 中


    我这里以 PushButton 控件为例

    3)设置信号与槽


    信号与槽(Signal & Slot)是 Qt 编程的基础

  • 信号:当事件发生之后,比如 PushButton按钮被点击了一下,它就会发出一个clicked信号;
  • 槽:当信号发出时,被连接的槽函数会自动被回调;
  • Edit ->编辑信号/槽 或 F4

    选中控件往下拖,弹出设置界面

    设置信号:左边选中 clicked();

    设置槽:右边添加button1(),并选中; 

    如何设置添加槽?右边编辑设置,选中 "+" 添加槽,并设置名字为 button1()

    点击OK,这样 PushButton 控件的信号与槽就设置好了,如下图:

    4)ctrl+s 保存ui文件


    保存好后关闭Qt Designer,回到 PyCharm,工程多了 button.ui

    2、将ui文件转化成py文件


    右键选中 button.ui -> External Tools -> PyUic,将ui文件转化成py文件。

    生成 button.py 文件。可以看到 button.py 中有这样一行代码:

    self.pushButton.clicked.connect(MainWindow.button1)

    pushButton控件clicked信号(点击)连接槽为MainWindow.button1(),即:当点击pushButton控件时会执行 MainWindow.button1() 函数。

    其他控件的信号与槽也是这样建立连接的,因此我们无需非得在ui界面设置,代码中可以直接调用 connect 函数将信号与槽函数建立连接。

    三、编写python代码


    先看下工程的文件结构

    可以看到,由ui生成的py文件中类为 Ui_MainWindow,下面介绍怎么使用 button.py 文件

    1、新建test1.py文件


    代码如下:

    from PyQt5.QtWidgets import QMainWindow
    from button import Ui_MainWindow        #导入button.py中的Ui_MainWindow类
    
    class test_Windows(QMainWindow, Ui_MainWindow): #test_Windows父类为QMainWindow Ui_MainWindow
        #定义窗口初始化函数
        def __init__(self):
            super(test_Windows, self).__init__()    #调用test_Windows父类的__init__()
            self.setupUi(self)                      #设置UI界面
    
        #定义 PushButton 按键的槽函数(按下按键会打印"hello world.")
        def button1(self):
            print("hello world.")

    2、新建main.py文件


    添加入口点: 

    import sys
    from PyQt5.QtWidgets import QApplication, QMainWindow
    from test1 import test_Windows
    
    if __name__ == '__main__':
        app = QApplication(sys.argv)    #application 对象
        ui_main = test_Windows()        #实例化qt designer创建的Ui_MainWindow类
        ui_main.show()                  #显示
        sys.exit(app.exec_())           #关闭UI执行

    3、运行程序


    按下 PushButton,打印 "hello world."

    四、生成exe可执行程序


    右键选中 main.py -> External Tools -> pyinstaller,等待生成 main.exe,如图:

    windows执行main.exe。

    问题及解决方法:

    运行main.exe时出现错误弹框:"No module named 'PyQt5.sip'",表示windows没有"PyQt5.sip"模块。

    这里需要注意2点:

    (1) python安装了PyQt5.sip

            这个肯定没问题,因为PyCharm中可以正常运行

    (2) PyCharm和windows用的python环境一定要相同

            可以看下PyCharm工程中的 site-packages 的路径,再看下windows环境变量是否添加了这个路径

    添加环境变量后,问题解决。

    作者:hinewcc

    物联沃分享整理
    物联沃-IOTWORD物联网 » PyCharm环境基于PyQt5开发python上位机

    发表回复