Python - Como llamar a un programa de python desde un push button

 
Vista:
sin imagen de perfil

Como llamar a un programa de python desde un push button

Publicado por skaailet (2 intervenciones) el 11/04/2020 03:56:26
Que tal
desarrolle un GUI con ayuda de PyQt5 Designer y un script en python que lee e imprime los valores de ciertas Tags de un PLC

lo que busco es juntar ambos codigos

en el GUI tengo 3 entradas de texto
1 para la IP
1 para el Slot del PLC
1 para el Nombre de la Tag
y 1 Boton

en teoria al hacer click en el boton start el programa de python debera empezar a correr y hacer lo suyo
tomando como datos los datos ingresados en las entradas de texto

perooooooo no ouedo hacer que uno llame al otro
ya tengo el .ui convertido a .py
no se muy bien como agregar o que agregar para que ambos funcionen como deberian

Podria alguien apoyarme en eso?

1
2
3
4
5
6
7
8
9
10
11
12
13
from PyQt5 import QtCore, QtGui, QtWidgets, uic
 
class GUI_PLC_1(QtWidgets.QMainWindow):
    def __init__(self):
        super(GUI_PLC_1,self).__init__()
        uic.loadUi('GUI_PLC.ui',self)
 
if __name__ == '__main__':
    import sys
    app = QtWidgets.QApplication(sys.argv)
    window = GUI_PLC_1()
    window.show()
    sys.exit(app.exec_())


y el codigo de python pongo una parte ya que es algo largo (los actuadores se repiten 64 veces)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
from pylogix import PLC
import sys
sys.path.append('..')
import time
import subprocess
import xlwt
 
 
with PLC() as comm:
    comm.IPAddress = '172.21.11.10'
    comm.ProcessorSlot = 0
    ret = comm.GetPLCTime()
 
    print("Fecha y Hora de Registro Revision Fallas", ret.Value, )
    time.sleep(1)
    Estacion = "D2M017"
    Estacion2 = "D2M025"
 
#ACTUADOR 1
    ACTUADOR = comm.Read('D2M_017.Status.Act._1.WBypassed')
    ret = comm.GetPLCTime()
    Numero_Act_EnBypass017 = 0
    if ACTUADOR.Value == True:
        Sensor = "ACTUADOR 1 WORK SENSOR EN BY PASS"
        Numero_Act_EnBypass017 = (Numero_Act_EnBypass017 +1)
        print(Estacion, ret.Value, "D2M017 =",Sensor)
    else:
        Sensor = "ACTUADOR 1 WORK OK"
 
 
 
    ACTUADOR = comm.Read('D2M_017.Status.Act._1.HBypassed')
    ret = comm.GetPLCTime()
    if ACTUADOR.Value == True:
        Sensor = "ACTUADOR 1 HOME SENSOR EN BY PASS"
        Numero_Act_EnBypass017 = (Numero_Act_EnBypass017 +1)
        print(Estacion, ret.Value, "D2M017 =",Sensor)
    else:
        Sensor = "ACTUADOR 1 HOME OK"
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 2.808
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Como llamar a un programa de python desde un push button

Publicado por tincopasan (1082 intervenciones) el 11/04/2020 04:25:24
hola:
la verdad no entiendo bien la pregunta, pero si pones todo el código dentro de una función o varias de acuerdo a lo que necesites, simplemente llamás a las funciones y listo. Si el script es un módulo lo importas primero .No puedo saber si lo que querés es relacionarlo con los widgwts de pyqt, pero no parece ya que solamente se ven print
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Como llamar a un programa de python desde un push button

Publicado por Jose Eduardo (2 intervenciones) el 11/04/2020 04:35:08
En el GUI (primer codigo) hay un boton
necesito que ese boton mande llamar o inicie al segundo programa (PLC Actuadores)
para que empieze a hacer su analisis

en el GUI tengo 3 entradas de texto
en una va la IP y en otra el Numero de Slot necesito que lo que se escriba alli se ponga en la parte de

1
2
3
4
with PLC() as comm:
    comm.IPAddress = ENTRADA DE TEXTO 1
    comm.ProcessorSlot = ENTRADA DE TEXTO 2
    ret = comm.GetPLCTime()

y la ultima entrada de texto iria aqui

1
2
ACTUADOR = comm.Read(NOMBRE DE LA TAG)
    ret = comm.GetPLCTime()

pero no puedo o mas bien no se como hacer las def para que se autollene eso con lo que se escriba en lasentradas de texto
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 2.808
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Como llamar a un programa de python desde un push button

Publicado por tincopasan (1082 intervenciones) el 11/04/2020 06:40:44
bueno al final es lo que te dije antes basicamente, no me voy a poner a hacerte todo el código en base al tuyo, pyqt trae una documentación extensa, pero sale todo ahi.
Ahora bien, te voy a mostrar con un ejemplo como se puede hacer, queda en vos adaptarlo a tus necesidades.
Con esto creo la ventana dos entradas de texto y un boton, que es parte de lo que debes tener en el *.ui
este sería el archivo principal.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#-*- coding: utf -8 -*-
import sys
from otro import *   #acá llamo al otro escript, que le puse de nombre otro.py
from PyQt5 import QtWidgets as qtw
 
class Ventana(qtw.QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("Prueba")
        self.resize(500,300)
        self.InitUI()
 
    def InitUI(self):
 
        self.texto1= qtw.QLineEdit(self)
        self.texto1.move(20,50)
        self.texto2 = qtw.QLineEdit(self)
        self.texto2.move(20,90)
        self.boton =qtw.QPushButton("Iniciar",self)
        self.boton.move(200,200)
        self.boton.clicked.connect(self.ApretarBoton)  #supongo que sabes de señales y espacios en pyqt (signals,slots)
        self.show()
 
    def ApretarBoton(self)                             #esta función es para que el boton haga algo:
        ipvalor= self.texto1.text()                     #esto no es neceario así pero lo hago para facilitarte la lectura
        slotvalor= self.texto2.text()
        conexion(ipvalor,slotvalor)                 #acá estoy llamando a la función que está en otro
 
if __name__== "__main__":
    aplicacion = qtw.QApplication(sys.argv)
    miventana=Ventana()
    sys.exit(aplicacion.exec_())

Esto es lo que hay en archivo otro.py

1
2
3
4
5
6
#-*- coding: utf -8 -*-
 
def conexion(ip,slot) :  # en esta funcion le voy a pasar los valores que hay en los textos y los imprimo
    var1= ip
    var2= slot
    print(var1,var2)

ahora ejecutas el principal y listo! es muy simple
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar