试试用pyqt做一个上位机软件,但愿不会烂尾(一):开端

        作为一个工控专业的技术人员,编程只是份外的一个附属技能,不可能学得全面、系统和特别深入。所以怎样在付出最少的前提下解决一些实际问题,就很重要。原则上是用到哪学到哪,尽量不去碰一些高深的理论和功能,以免陷进去无法自拔,毕竟每天有大量的事情需要去做,精力有限。

        scada软件是工控人经常需要用到的,我一直用的最多的是WINCC系列,不得不说西门子在功能和稳定性方面确实是顶尖的,唯一不爽的是价格,盗版的话心里又不舒服。所以最近关注和尝试了很多款免费和号称免费的scada软件,目前为止还没有找到一款合适的。有的是只有部分功能免费,有的是功能太简单,有的是稳定性太差,有的缺乏教程资料,所以萌生一个想法,能不能从零开始,边学边干,做一个自己够用的上位机?

        从头开始,记录一下整个过程,但愿不会烂尾。

 一、功能规划:

1、多画面切换

2、用户管理

3、PLC通信和操作变量

4、使用QTdesigner作为主要的布局手段,建立简单的自定义库,拖放布置,尽量减少手写代码量

5、历史数据的存储和数据可视化呈现

6、报警功能

7、多媒体的连接和呈现

目前能想到的就这么多了。

二、话不多说,开干。

1、创建基础画面。

        常驻的画面有两个,左侧和顶部,分别在QTdesigner里面创建并保存。顶部为W_t.ui,左侧存为W_0.ui。

顶部的

 左侧的

试试用pyqt做一个上位机软件,但愿不会烂尾(一):开端_第1张图片

         建立一个Widget,每创建一个新的部件,都把部件扔进去,作为自己的库,以后用的时候直接ctrl拖动就是了。

        试试用pyqt做一个上位机软件,但愿不会烂尾(一):开端_第2张图片

2、编写代码,调用和显示画面。 

#这个是主函数
import sys, time
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5 import uic, QtCore
from ClockPulse import Clocker       #自定义的周期脉冲函数,默认参数下周期为1s
import logos    #导入图像资源

timer_1s = Clocker()   # 定义全局1s的周期定时器
timer_05s = Clocker(500)   # 定义全局500ms的周期定时器


class UiObject(QObject):    # 定义一个Object
    # 信号的定义必须在函数体之前,否则会报错以下内容:
    # 'PyQt5.QtCore.pyqtSignal' object has no attribute 'connect'    #

    forms = []  # 窗口实体的列表,方便集中控制和管理

    def __init__(self, parent=None):
        super(UiObject, self).__init__(parent)
        self.w_t = uic.loadUi('w_t.ui')   #常驻的顶窗体
        self. to_do_t(self.w_t)               # 初始化
        self.w_0 = uic.loadUi('w_0.ui')  # 常驻的左窗体
        self.to_do_0(self.w_0)               # 初始化

    def to_do_t(self,  in_form):          # 顶窗体初始化
        in_form.setWindowFlags(Qt.FramelessWindowHint)  # 关掉边框
        in_form.move(0, 0)  # 定位窗体在屏幕的位置

    def to_do_0(self,  in_form):          # 左窗体初始化
        in_form.setWindowFlags(Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint)  # 关掉边框,始终最前
        in_form.move(0, 0)  # 定位窗体在屏幕的位置

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ui = UiObject()  # object的本地实体化
    ui.w_0.show()  # 显示窗体
    ui.w_t.show()
    sys.exit(app.exec_())

初步的框架已建立,运行效果如下:

试试用pyqt做一个上位机软件,但愿不会烂尾(一):开端_第3张图片

用到的资源在这里:https://download.csdn.net/download/xulibo5828/87545279

 

你可能感兴趣的:(pyqt)