__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

[email protected]: ~ $
<!DOCTYPE html>
<html lang="es" dir="ltr">
<head>
<base href="../../../../">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>De Python a Basic</title>
<link rel="shortcut icon" href="media/navigation/favicon.ico">
<link type="text/css" href="normalize.css" rel="Stylesheet">
<link type="text/css" href="prism.css" rel="Stylesheet">
<link type="text/css" href="default.css" rel="Stylesheet">
<script type="text/javascript" src="polyfills.js"></script><script type="text/javascript" src="languages.js"></script><script type="text/javascript" src="es/langnames.js"></script><script type="text/javascript" src="flexsearch.debug.js"></script><script type="text/javascript" src="prism.js"></script><script type="text/javascript" src="help2.js" defer></script><script type="text/javascript" src="a11y-toggle.js" defer></script><script type="text/javascript" src="paginathing.js" defer></script><script type="text/javascript" src="es/bookmarks.js" defer></script><script type="text/javascript" src="es/contents.js" defer></script><script type="text/javascript" src="help.js" defer></script><meta name="viewport" content="width=device-width,initial-scale=1">
</head>
<body>
<header id="TopLeftHeader"><a class="symbol" href="es/text/shared/05/new_help.html"><div></div></a><a class="logo" href="es/text/shared/05/new_help.html"><p dir="auto">Ayuda de LibreOffice 25.2</p></a><div class="dropdowns"><div class="modules">
<button type="button" data-a11y-toggle="modules-nav" id="modules" aria-haspopup="true" aria-expanded="false" aria-controls="modules-nav">Módulo</button><nav id="modules-nav" hidden=""></nav>
</div></div></header><aside class="leftside"><input id="accordion-1" name="accordion-menu" type="checkbox"><label for="accordion-1" dir="auto">Contenido</label><div id="Contents" class="contents-treeview"></div></aside><div id="SearchFrame"><div id="Bookmarks">
<input id="search-bar" type="search" class="search" placeholder="Buscar en los marcadores del módulo elegido" dir="auto"><div class="nav-container" tabindex="0"><nav class="index" dir="auto"></nav></div>
</div></div>
<div id="DisplayArea" itemprop="softwareHelp" itemscope="true" itemtype="http://schema.org/SoftwareApplication">
<noscript><div id="WarnJS"><h1 dir="auto">Active JavaScript en el navegador para mostrar las páginas de ayuda de LibreOffice.</h1></div></noscript>
	  <a id="N0330"></a> <meta itemprop="keywords" content="Python,llamada a Basic"> <meta itemprop="keywords" content="ParamArray">
          <h1 id="N0331" dir="auto">
<a id="py2ba_h1"></a>Llamar macros en Basic desde Python</h1>
	  <p id="N0332" class="paragraph" dir="auto">Es posible llamar macros escritas en LibreOffice Basic desde secuencias de órdenes en Python y sacar provecho de funcionalidades tales como:</p>
	  <ul itemprop="Unordered" itemscope="true" itemtype="http://schema.org/ItemList" dir="auto">
              <li itemprop="itemListElement" itemscope="true" itemtype="http://schema.org/ItemListUnordered" dir="auto"><p id="N0333" class="listitem" dir="auto">Funciones de registro sencillas para la consola de traza de la biblioteca <span class="literal">Access2Base</span>,</p></li>
              <li itemprop="itemListElement" itemscope="true" itemtype="http://schema.org/ItemListUnordered" dir="auto"><p id="N0334" class="listitem" dir="auto">funciones de E/S en pantalla <span class="literal">InputBox</span> y <span class="literal">MsgBox</span> basadas en Basic para facilitar el desarrollo con Python,</p></li>
              <li itemprop="itemListElement" itemscope="true" itemtype="http://schema.org/ItemListUnordered" dir="auto"><p id="N0335" class="listitem" dir="auto">interrupción de la ejecución de la secuencia escrita en Python por llamada a <span class="literal">Xray</span> para examinar las variables.</p></li>
	  </ul>
	  <a id="APIScriptingFramework"></a>
		 <p id="N0336" class="paragraph" dir="auto">El marco de programación de macros de la API (interfaz de programación de aplicaciones) de LibreOffice admite la ejecución de secuencias de órdenes entre Python y Basic u otros lenguajes de programación admitidos. Los argumentos se pueden pasar de un lado a otro entre llamadas, siempre que representen tipos de datos primitivos que ambos lenguajes reconozcan y suponiendo que el marco de programación de macros los convierta de forma adecuada.</p>
	  
	  <div class="tip">
<div class="noteicon" dir="auto"><img src="media/icon-themes/res/helpimg/tip.svg" alt="tip" style="width:40px;height:40px;"></div>
<div class="notetext"><p id="N0337" dir="auto">Es recomendable familiarizarse con los módulos estándares de Python y las funcionalidades de la API de LibreOffice antes de efectuar llamadas  entre los lenguajes Python, Basic, JavaScript o cualquier otro motor de secuencias de órdenes.</p></div>
</div>
<br>
          
	  <div class="warning">
<div class="noteicon" dir="auto"><img src="media/icon-themes/res/helpimg/warning.svg" alt="warning" style="width:40px;height:40px;"></div>
<div class="notetext"><p id="N0338" dir="auto">Es posible que, al intentar ejecutar secuencias de órdenes escritas en Python desde un entorno de desarrollo integrado (EDI), falte el motor de BASIC incrustado en LibreOffice. En estos contextos, evite las llamadas de Python a LibreOffice Basic. Por el contrario, el entorno Python y los objetos de red universales (UNO, por sus siglas en inglés) siempre estarán disponibles. Para más información, consulte <a target="_top" href="es/text/sbasic/python/python_ide.html">Puesta en funcionamiento de un EDI para Python</a>.</p></div>
</div>
<br>
	  <h2 id="N0339" dir="auto">Recuperación de secuencias de órdenes en Basic en LibreOffice</h2>
	  <p id="N0340" class="paragraph" dir="auto">Las macros de LibreOffice BASIC pueden ser de uso personal, compartidas o estar incrustadas en los documentos. Para poder ejecutarlas, ha de proveerse un entorno de ejecución de Python con las ubicaciones de macros de BASIC. La implementación de la interfaz <a target="_blank" href="https://api.libreoffice.org/docs/idl/ref/interfacecom_1_1sun_1_1star_1_1script_1_1provider_1_1XScript.html">com.sun.star.script.provider.XScriptProvider</a> permite recuperar macros ejecutables:</p>
	  <a id="Python_getBasicScript"></a>
		 <a id="N0341"></a><meta itemprop="keywords" content="API,script.provider.MasterScriptProviderFactory: Recuperación de scripts (secuencias de órdenes) básicos">
<meta itemprop="keywords" content="API,script.provider.XScript: Ejecutando scripts (secuencias de órdenes) básicos">
<meta itemprop="keywords" content="API,XScriptProvider: Recuperación de scripts (secuencias de órdenes básicas)">
		 <div class="pycode" itemscope="true" itemtype="http://schema.org/SoftwareSourceCode" itemprop="codeSampleType" content="snippet" data-tooltip="Pulse en el texto para copiarlo en el portapapeles"><pre dir="auto"><code class="language-python line-numbers">
		 import uno
		 from com.sun.star.script.provider import Xscript
		     
		 def getBasicScript(macro='Main', module='Module1', library='Standard',
		         isEmbedded=False) -&gt; XScript:
		     '''Tomar el objeto de secuencia de Basic antes de la invocación.'''
		     ctx = uno.getComponentContext()
		     smgr = ctx.ServiceManager
		     if isEmbedded:
		         desktop = smgr.createInstanceWithContext('com.sun.star.frame.Desktop', ctx)
		         scriptPro = desktop.CurrentComponent.getScriptProvider()
		         location = "document"
		     else:
		         mspf = smgr.createInstanceWithContext(
		             "com.sun.star.script.provider.MasterScriptProviderFactory", ctx)
		         scriptPro = mspf.createScriptProvider("")
		         location = "application"
		     scriptName = "vnd.sun.star.script:"+library+"."+module+"."+macro+ \
		                  "?language=Basic&amp;location="+location
		     xScript = scriptPro.getScript(scriptName)
		     return xScript
		 </code></pre></div>
	  
	  <h2 id="N0363" dir="auto">Ejecución de secuencias de órdenes en Basic en LibreOffice</h2>
	  <a id="APIScriptingFramework_XScript"></a>
		 <a id="N0364ndx"></a><meta itemprop="keywords" content="API,script.provider.XScript: ejecutar secuencias de órdenes en Basic">
		 <p id="N0364" class="paragraph" dir="auto">La documentación del Kit de desarrollo de software (SDK) de LibreOffice correspondiente a la interfaz <a target="_blank" href="https://api.libreoffice.org/docs/idl/ref/interfacecom_1_1sun_1_1star_1_1script_1_1provider_1_1XScript.html#a11a551f5a2520f74c5109cd8c9f8c7b7">com.sun.star.script.provider.XScript</a> detalla la convención para efectuar llamadas entre lenguajes de programación. La invocación de funciones requere tres matrices:</p>
		 <ul itemprop="Unordered" itemscope="true" itemtype="http://schema.org/ItemList" dir="auto">
			<li itemprop="itemListElement" itemscope="true" itemtype="http://schema.org/ItemListUnordered" dir="auto"><p id="N0365" class="listitem" dir="auto">la primera enumera los argumentos de la rutina llamada</p></li>
			<li itemprop="itemListElement" itemscope="true" itemtype="http://schema.org/ItemListUnordered" dir="auto"><p id="N0366" class="listitem" dir="auto">la segunda identifica los argumentos modificados</p></li>
			<li itemprop="itemListElement" itemscope="true" itemtype="http://schema.org/ItemListUnordered" dir="auto"><p id="N0367" class="listitem" dir="auto">la tercera almacena los valores devueltos</p></li>
		 </ul>
	  
	  <h3 id="N0368" dir="auto">Sintaxis de Python</h3>
	  <p id="N0369" class="paragraph" dir="auto"><span class="input" data-tooltip="Pulse en el texto para copiarlo en el portapapeles">results = script.invoke((prompt,buttons,title), (), ())</span></p>
	  <p id="N0370" class="paragraph" dir="auto"><span class="input" data-tooltip="Pulse en el texto para copiarlo en el portapapeles">script.invoke((message,), tuple, ())</span></p>
	  <p id="N0371" class="paragraph" dir="auto"><span class="input" data-tooltip="Pulse en el texto para copiarlo en el portapapeles">script.invoke((args), (), results)</span></p>
	  <h3 id="N0372" dir="auto">Ejemplos de secuencias de órdenes personales o compartidas</h3>
          <p id="N0373" class="paragraph" dir="auto">Algunos ejemplos sobre la <a target="_top" href="es/text/sbasic/python/python_screen.html">entrada/salida a la pantalla</a> detallan cómo realizar las llamadas de invocación a Basic desde Python. En <a target="_top" href="es/text/sbasic/python/python_document_events.html">Monitorización de eventos de documento</a>, se muestra el uso del comodín *args en el lenguaje Python para imprimir un número variable de parámetros en el diálogo de la consola de registros de <span class="literal">Access2Base</span>.</p>
	  <div class="tip">
<div class="noteicon" dir="auto"><img src="media/icon-themes/res/helpimg/tip.svg" alt="tip" style="width:40px;height:40px;"></div>
<div class="notetext"><p id="N0374" dir="auto">Mientras está desarrollando su macro, puede interrumpir la ejecución de la secuencia de órdenes de Python si utiliza la extensión <a target="_blank" href="https://berma.pagesperso-orange.fr/index2.html">Xray</a> para inspeccionar las propiedades y métodos de objetos UNO. El depurador de extensiones APSO permite la introspección de objetos cuando usa las extensiones Xray o MRI.</p></div>
</div>
<br>
	  <div class="pycode" itemscope="true" itemtype="http://schema.org/SoftwareSourceCode" itemprop="codeSampleType" content="snippet" data-tooltip="Pulse en el texto para copiarlo en el portapapeles"><pre dir="auto"><code class="language-python line-numbers">
	  def xray(myObject):
	  	  script = getBasicScript(library="XrayTool", module="_Main", macro="Xray")
	  	  script.invoke((myObject,), (), ())
	  </code></pre></div>
	  <h3 id="N0378" dir="auto">Ejemplos de secuencias de órdenes incrustadas en documentos</h3>
	  <p id="N0379" class="paragraph" dir="auto">La sintaxis simplificada de Python <span class="literal">*args</span> puede ser usada en conjunto con rutinas Basic de LibreOffice que acepten un número variable de argumentos. Más abajo, las funciones de Python <span class="literal">Print</span> y <span class="literal">SUM</span> llaman a sus contrapartes de Basic <span class="literal">Print</span> y <span class="literal">SUM</span> en la ya mencionada función <span class="literal">getBasicScript</span>. El manejo de excepciones no se detalla.</p>
	  <div class="pycode" itemscope="true" itemtype="http://schema.org/SoftwareSourceCode" itemprop="codeSampleType" content="snippet" data-tooltip="Pulse en el texto para copiarlo en el portapapeles"><pre dir="auto"><code class="language-python line-numbers">
	  # -*- coding: utf-8 -*-
	  from __future__ import unicode_literals
	      
	  def Print(*args):
	      """Muestra las cadenas o expresiones numéricas especificadas en un cuadro de diálogo."""
	      xScript = getBasicScript("Print", "Scripting", embedded=True)
	      xScript.invoke((args), (), ())
	      
	  def SUM(*args):
	      """SUMA la expresión numérica especificada."""
	      xScript = getBasicScript("SUM", "Scripting", embedded=True)
	      res = xScript.invoke((args), (), ())
	      return res[0]
	      
	  # def getBasicScript()  # see above
	      
	  def playWithArgs():
	      Print("Fun with *args ", -9.81, 297864.681974, 8762E-137)
	      Print(SUM(45, -9.81, 297864.681974))
	      Print(SUM(45, -9.81, 297864.681974, 8762E+137))
	      
	  g_exportedScripts = (playWithArgs,)
	  </code></pre></div>
	  <p id="N0402" class="paragraph" dir="auto">Las rutinas de LibreOffice Basic <span class="literal">Print</span> y <span class="literal">SUM</span>, basadas en documentos, aceptan un número variable de argumentos. Los atributos <span class="literal">Private</span> o <span class="literal">Public</span> no tienen efecto. La comprobación del tipo de argumentos se omite por claridad.</p>
	  <div class="bascode" itemscope="true" itemtype="http://schema.org/SoftwareSourceCode" itemprop="codeSampleType" content="snippet" data-tooltip="Pulse en el texto para copiarlo en el portapapeles"><pre dir="auto"><code class="language-visual-basic line-numbers">
	  Option Compatible ' "Standard.Scripting" module
	  Option Explicit
	      
	  Private Sub Print(ParamArray args() As Variant, Optional sep As String = " ")
	      ''' Imprimir la lista de número variable de elementos '''
	      ' se aceptan todos los argumentos convertibles de CStr()
	      Dim str As String, i As Integer
	      If UBound(args) &gt;= 0 Then
	          For i = 0 To UBound(args)
	              str = str + Cstr(args(i))+ sep 
	          Next i
	      End If
	      Print str
	  End Sub ' Standard.Scripting.Print()
	      
	  Public Function SUM(ParamArray args() As Variant) As Variant
	      ''' SUM (suma) una lista variable de números '''
	      Dim ndx As Integer
	      If UBound(args) &gt;= 0 Then
	          For ndx = 0 To UBound(args)
	              SUM = SUM + args(ndx)
	          Next ndx
	      End If
	  End Function ' Standard.Scripting.SUM()
	  </code></pre></div>
	  <a id="relatedtopics"></a><div class="relatedtopics">
<p class="related" itemprop="mentions" dir="auto"><a id="related"></a><span class="emph">Temas relacionados</span></p>
<div class="relatedbody" itemprop="mentions">
		 <div class="embedded"><p class="embedded" dir="auto"><a target="_top" href="es/text/sbasic/guide/basic_2_python.html">Invocar secuencias de Python desde Basic</a></p></div>
		 <div class="embedded"><p class="embedded" dir="auto"><a target="_top" href="es/text/sbasic/python/python_examples.html">Ejemplos de programación en Python</a></p></div>
		 <div class="embedded"><p class="embedded" dir="auto"><a target="_top" href="es/text/sbasic/python/main0000.html">Ayuda con las macros en Python en LibreOffice</a></p></div>
         <div class="embedded"><p class="embedded" dir="auto"><a target="_top" href="es/text/sbasic/shared/main0601.html">Ayuda de LibreOffice Basic</a></p></div>
	  </div>
</div>
   </div>
<div id="DonationFrame"></div>
<footer><h2 style="text-align: center;"><a href="https://books.libreoffice.org" target="_blank">Libros de LibreOffice</a></h2>
<div class="noteicon" dir="auto" style="display:flex;justify-content:center;flex-wrap:wrap;row-gap:15px;">
<img src="media/navigation/libo-writer.svg" alt="Writer Icon" style="width:60px;height:60px;"><img src="media/navigation/libo-calc.svg" alt="Calc Icon" style="width:60px;height:60px;"><img src="media/navigation/libo-impress.svg" alt="Impress Icon" style="width:60px;height:60px;"><img src="media/navigation/libo-draw.svg" alt="Draw Icon" style="width:60px;height:60px;"><img src="media/navigation/libo-base.svg" alt="Base Icon" style="width:60px;height:60px;"><img src="media/navigation/libo-math.svg" alt="Math Icon" style="width:60px;height:60px;"><img src="media/navigation/libo-symbol-black.svg" alt="Getting Started Icon" style="width:60px;height:60px;">
</div>
<div id="DEBUG" class="debug">
<h3 class="bug">Help content debug info:</h3>
<p dir="auto">This page is: <a href="https://opengrok.libreoffice.org/xref/help/source/text/sbasic/python/python_2_basic.xhp" target="_blank">/text/sbasic/python/python_2_basic.xhp</a></p>
<p dir="auto">Title is: De Python a Basic</p>
<p id="bm_module" dir="auto"></p>
<p id="bm_system" dir="auto"></p>
<p id="bm_HID" dir="auto"></p>
</div></footer>
</body>
</html>

Filemanager

Name Type Size Permission Actions
main0000.html File 9.78 KB 0644
python_2_basic.html File 16.96 KB 0644
python_dialogs.html File 8.53 KB 0644
python_document_events.html File 25.83 KB 0644
python_examples.html File 6.89 KB 0644
python_handler.html File 17.02 KB 0644
python_ide.html File 6.29 KB 0644
python_import.html File 13.13 KB 0644
python_listener.html File 13.14 KB 0644
python_locations.html File 10.53 KB 0644
python_platform.html File 11.23 KB 0644
python_programming.html File 23.74 KB 0644
python_screen.html File 12.79 KB 0644
python_session.html File 13.14 KB 0644
python_shell.html File 12 KB 0644
Filemanager