国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

pyside6上位機開發(fā)

這篇具有很好參考價值的文章主要介紹了pyside6上位機開發(fā)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

import sys
import configparser
import time

from snap7 import client,util
from PySide6.QtWidgets import *
from PySide6.QtCore import QTimer, Slot,Qt
from PySide6.QtGui import QColor, QPainter, QPen
from PySide6.QtCharts import *


class Ui(QWidget):
    def __init__(self):
        super(Ui, self).__init__()
        self.resize(900,700)
        self.labels = []
        self.buttons = []
        layout = QGridLayout()
        for i in range(6):
            for j in range(4):
                label= QLabel()
                label.setFixedSize(30,30)
                label.setStyleSheet("background-color:gray;border-radius:15px;")
                self.labels.append(label)
                layout.addWidget(label,i,j)
        frame = QFrame(self)
        frame.resize(800,400)
        frame.setLayout(layout)

        self.config = configparser.ConfigParser()
        self.config.read('ini',encoding='utf-8')
        buttons_name = self.config.options("DO")
        btn_layout=QGridLayout()
        for i,val in enumerate(buttons_name):
            btn=QPushButton(val)
            btn.pressed.connect(self.press_event)
            btn.released.connect(self.release_event)
            btn.setFixedSize(60,30)
            btn_layout.addWidget(btn,i%2,i//2)
        frame2 = QFrame(self)
        frame2.resize(800,300)
        frame2.move(0,410)
        frame2.setLayout(btn_layout)

        self.star_btn = QPushButton('start',self)
        self.star_btn.move(30,650)
        self.star_btn.clicked.connect(self.auto_do)

        self.timer = QTimer(self)
        self.timer.timeout.connect(self.read_data)

    def change_label_color(self,data):
        bytes = data
        self.labels[0].setStyleSheet("background-color:green;border-radius:15px;") if util.get_bool(bytes,0,0) else self.labels[0].setStyleSheet("background-color:red;border-radius:15px;")
        self.labels[1].setStyleSheet("background-color:green;border-radius:15px;") if util.get_bool(bytes,0,1) else self.labels[1].setStyleSheet("background-color:red;border-radius:15px;")
        self.labels[2].setStyleSheet("background-color:green;border-radius:15px;") if util.get_bool(bytes,0,2) else self.labels[2].setStyleSheet("background-color:red;border-radius:15px;")
        self.labels[3].setStyleSheet("background-color:green;border-radius:15px;") if util.get_bool(bytes,0,3) else self.labels[3].setStyleSheet("background-color:red;border-radius:15px;")
        self.labels[4].setStyleSheet("background-color:green;border-radius:15px;") if util.get_bool(bytes,0,4) else self.labels[4].setStyleSheet("background-color:red;border-radius:15px;")
        self.labels[5].setStyleSheet("background-color:green;border-radius:15px;") if util.get_bool(bytes,0,5) else self.labels[5].setStyleSheet("background-color:red;border-radius:15px;")

    def paintEvent(self, event) -> None:
        super(Ui, self).paintEvent(event)
        painter = QPainter(self)
        pen = QPen()
        pen.setWidth(2)
        pen.setColor(Qt.green)
        painter.setPen(pen)
        for i in range(5):
            y=30+50*i
            painter.drawLine(10,y,800,y)
        painter.end()

class FuncToolsUi(Ui):
    def __init__(self):
        super(FuncToolsUi, self).__init__()

        self.plc = client.Client()
        self.plc.set_connection_type(3)
        self.bytesarry = bytearray(14)
        try:
            self.plc.connect(self.config.get("PLC","host"),0,1)
        except:
            self.flag = False
        else:
            self.flag = True
            self.timer.start(500)

    def read_data(self):
        bytes = self.plc.db_read(1,0,10)
        self.change_label_color(bytes)

    @Slot()
    def btn_click(self):
        btn_name = self.sender().text()

        id=self.config.getint("DO",btn_name)
        # print(btn_name,id)

    def press_event(self):
        txt = self.sender().text()
        id = self.config.getint("DO",txt)%8
        count = self.config.getint("DO",txt)//8
        util.set_bool(self.bytesarry,10+count,id,1)
        self.plc.db_write(1,0,self.bytesarry)
        print(txt,self.config.getint("DO",txt))

    def release_event(self):
        txt = self.sender().text()
        id = self.config.getint("DO", txt)%8
        count = self.config.getint("DO",txt)//8
        util.set_bool(self.bytesarry, 10+count, id, 0)
        self.plc.db_write(1, 0, self.bytesarry)

    def auto_do(self):
        orders = eval(self.config.get("order","啟動順序"))
        # [('制砂主機', 2), ('提升機', 3), ('震動篩', 4), ('上料皮帶機', 5)]
        data = sorted([(v[1],v[0]) for v in orders ])
        device = [tex[1] for tex in data]  #啟動順序
        print(device)
        for i in device:
            addr = self.config.getint("DO",i)%8
            step =self.config.getint("DO",i)//8
            util.set_bool(self.bytesarry,10+step,addr,True)
            self.plc.db_write(1,0,self.bytesarry)
            time.sleep(2)
            util.set_bool(self.bytesarry,10+step,addr,False)  #復位
            self.plc.db_write(1,0,self.bytesarry)

ini文件文章來源地址http://www.zghlxwxcb.cn/news/detail-724522.html

[PLC]
host = 192.168.2.1
port = 502

[DO]
制砂主機 = 16
提升機 = 17
震動篩 = 18
上料皮帶機 = 19
中轉(zhuǎn)皮帶機1# = 9
中轉(zhuǎn)皮帶機2# = 10
出料皮帶 = 11
風機 = 12
空壓機 = 13

[DI]
制砂主機 = 0
提升機 = 1
震動篩 = 2
上料皮帶機 = 3
中轉(zhuǎn)皮帶機1# = 4
中轉(zhuǎn)皮帶機2# = 5
出料皮帶 = 6
風機 = 7
空壓機 = 8

[AI]
制砂主機 = 100
風機 = 101

[AO]
制砂主機 = 120
風機 = 121

[order]
啟動順序 = [('制砂主機', 2), ('提升機', 2), ('震動篩', 2), ('上料皮帶機', 5), ('中轉(zhuǎn)皮帶機1#', 6), ('中轉(zhuǎn)皮帶機2#', 1), ('出料皮帶', 7), ('風機', 8), ('空壓機', 9)]
停止順序 = [('制砂主機', 9), ('提升機', 8), ('震動篩', 7), ('上料皮帶機', 6), ('中轉(zhuǎn)皮帶機1#', 5), ('中轉(zhuǎn)皮帶機2#', 4), ('出料皮帶', 2), ('風機', 1), ('空壓機', 3)]

到了這里,關于pyside6上位機開發(fā)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • Python項目——搞怪小程序(PySide6+Pyinstaller)

    Python項目——搞怪小程序(PySide6+Pyinstaller)

    1、介紹 使用python編寫一個小程序,回答你是豬嗎。 點擊“是”提交,彈窗并退出。 點擊“不是”提交,等待5秒,重新選擇。 并且隱藏了關閉按鈕。 2、實現(xiàn) 新建一個項目。 2.1、設計UI 使用Qt designer設計一個UI界面,保存ui文件,再轉(zhuǎn)換為py文件并保存到項目目錄中,供后續(xù)

    2024年01月22日
    瀏覽(25)
  • Python GUI框架---- PySide6安裝與使用 - 打包部署

    Python GUI框架---- PySide6安裝與使用 - 打包部署

    安裝Python和PySide6 :首先,確保已經(jīng)安裝了Python和PySide6 。你可以從Python官方網(wǎng)站(https://www.python.org)下載并安裝Python,然后使用pip命令安裝PySide6 。 設計GUI界面:使用Qt Designer工具來設計GUI界面。Qt Designer是一個可視化的界面設計工具,可以幫助你創(chuàng)建和布局GUI界面。你可以

    2024年04月09日
    瀏覽(36)
  • Python項目——久坐提醒定時器(PySide6)編寫

    Python項目——久坐提醒定時器(PySide6)編寫

    1、介紹 使用Python編寫一個久坐提醒軟件。 功能: 設置工作時間。 設置休息時間。 選擇休息時是否播放音樂。 休息時,軟件置頂,且不能關閉。 2、工具 語言:python3.11 UI設計工具:Qt designer 編譯器:PyCharm 包:pygame、PySide6 3、代碼 新建一個項目,準備好音樂。 使用Qt des

    2024年01月19日
    瀏覽(20)
  • 【Python GUI編程系列 01】安裝python pycharm 和 pyside6

    【Python GUI編程系列 01】安裝python pycharm 和 pyside6

    本系列使用 python3 + pycharm + pyside6 來進行python gui設計,首先我們來配置編程環(huán)境 PS:為了減少復雜程度,本文使用venv來創(chuàng)建虛擬環(huán)境,所有的包都安裝在同一虛擬環(huán)境中,新手也可以不用虛擬環(huán)境直接安裝,關于虛擬環(huán)境配置這部分 本系列不做過多介紹,感興趣的同學可以

    2024年02月10日
    瀏覽(22)
  • Python+PySide6之模型/視圖/委托框架QListView案例實踐

    Python+PySide6之模型/視圖/委托框架QListView案例實踐

    Qt中的模型/視圖/委托框架是一種數(shù)據(jù)與可視化相互分離的技術,起源于Smalltalk的設計模式——Mode/View/Controller(MVC,模型/視圖/控制器),通常在構建用戶界面時使用。 MVC是由3部分組成。Model是應用程序?qū)ο螅琕iew是它的界面展示,Controller定義了界面對用戶輸入的反應方式。 Q

    2024年02月21日
    瀏覽(29)
  • python日常記賬本源代碼,基于PySide6,支持快速查詢、繪制圖表

    python日常記賬本源代碼,基于PySide6,支持快速查詢、繪制圖表

    python日常記賬本源代碼,基于PySide6(Qt for Python 6)的賬本,界面簡潔、功能強大,支持保存文件、快速查詢、繪制圖表等,是平時記賬的不錯選擇。賬目查詢、賬本編輯、添加/刪除、撤銷/重做、統(tǒng)計數(shù)據(jù)、生成圖表。 運行截圖: 完整程序下載地址:python日常記賬本源代碼

    2024年02月11日
    瀏覽(43)
  • PyCharm下安裝配置PySide6開發(fā)環(huán)境(Qt Designer、PyUIC和PyRCC)

    PyCharm下安裝配置PySide6開發(fā)環(huán)境(Qt Designer、PyUIC和PyRCC)

    本篇我們來介紹一下在PyCharm中如何安裝和配置PySide6的開發(fā)運行環(huán)境。 開發(fā)PySide6項目,我們可以使用Qt Designer、PyUIC和PyRCC這些好用的外部工具。 Qt Designer是啥東西?簡單的來說就是設計Qt界面的輔助開發(fā)工具,可以像開發(fā)VB那樣通過拖拽的方式進行所見即所得的可視化開發(fā)G

    2023年04月08日
    瀏覽(22)
  • 使用Python和Qt6(PySide6)創(chuàng)建GUI應用1簡介

    使用Python和Qt6(PySide6)創(chuàng)建GUI應用1簡介

    在本書從GUI開發(fā)的基本原理逐步過渡到使用PySide6創(chuàng)建您自己的、功能齊全的桌面應用程序。 圖形用戶界面(GUI Graphical User Interface) 歷史悠久,可追溯到20世紀60年代。斯坦福大學的NLS(ON-Line 系統(tǒng)引入了鼠標和窗口概念,并于1968年首次公開展示。隨后,施樂公司于1973年推出

    2024年02月04日
    瀏覽(25)
  • Python學習筆記——PySide6設計GUI應用之UI與邏輯分離

    1、打開PySide6的UI設計工具pyside6-designer,設計一個主窗口,保存文件名為testwindow.ui 2、使用PySide6的RCC工具把testwindow.ui文件轉(zhuǎn)換為testwindow_rc.py文件,此文件中有一個類Ui_MainWindow(包含各種控件對象) 一、通過類繼承實現(xiàn): class TestMainWindow(QMainWindow, Ui_MainWindow): 定義了一個新的

    2024年04月16日
    瀏覽(25)
  • PyCharm下安裝配置PySide6開發(fā)環(huán)境(Qt Designer(打開,編輯)、PyUIC和PyRCC)

    PyCharm下安裝配置PySide6開發(fā)環(huán)境(Qt Designer(打開,編輯)、PyUIC和PyRCC)

    python安裝路徑 ?pycharm安裝路徑: python系統(tǒng)變量: pycharm環(huán)境變量: ? 注意:正常安裝,并勾選ADD PATH一般會自動配好 用pycharm開發(fā)python項目時,使用虛擬環(huán)境的好處是: 可以為不同的項目創(chuàng)建不同的python環(huán)境,避免了依賴包和版本的沖突。 可以為同一個項目的不同環(huán)境(如

    2024年02月11日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包