Autor Tema: Donde se realiza la codificación en QT Designer.  (Leído 4767 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Daniel1952

  • PIC16
  • ***
  • Mensajes: 127
Donde se realiza la codificación en QT Designer.
« en: 20 de Septiembre de 2022, 16:02:42 »
Hola Picuino, ¿cómo estás?, hola a todos.-
Qué flor de dilema, tengo, les cuento lo que estoy haciendo,
creo la ventana con los correspondientes componentes con Designer
luego a partir del código "ventana.ui" lo paso a "ventana.py" hasta
allí todo bien, pero ahora cuando quiero sumar 2 números no sé cómo codificarlo
¿me podrían ayudar?

Código: Python
  1. # Form implementation generated from reading ui file 'ventana.ui'
  2. #
  3. # Created by: PyQt6 UI code generator 6.3.1
  4. #
  5. # WARNING: Any manual changes made to this file will be lost when pyuic6 is
  6. # run again.  Do not edit this file unless you know what you are doing.
  7.  
  8.  
  9. from PyQt6 import QtCore, QtGui, QtWidgets
  10.  
  11.  
  12. class Ui_MainWindow(object):
  13.     def setupUi(self, MainWindow):
  14.         MainWindow.setObjectName("MainWindow")
  15.         MainWindow.resize(320, 240)
  16.         self.centralwidget = QtWidgets.QWidget(MainWindow)
  17.         self.centralwidget.setObjectName("centralwidget")
  18.         self.pushButton = QtWidgets.QPushButton(self.centralwidget)
  19.         self.pushButton.setGeometry(QtCore.QRect(110, 120, 75, 23))
  20.         self.pushButton.setObjectName("pushButton")
  21.         self.lineEditUno = QtWidgets.QLineEdit(self.centralwidget)
  22.         self.lineEditUno.setGeometry(QtCore.QRect(20, 10, 91, 20))
  23.         self.lineEditUno.setObjectName("lineEditUno")
  24.         self.lineEditDos = QtWidgets.QLineEdit(self.centralwidget)
  25.         self.lineEditDos.setGeometry(QtCore.QRect(130, 10, 91, 20))
  26.         self.lineEditDos.setObjectName("lineEditDos")
  27.         self.label = QtWidgets.QLabel(self.centralwidget)
  28.         self.label.setGeometry(QtCore.QRect(20, 60, 47, 13))
  29.         self.label.setText("")
  30.         self.label.setObjectName("label")
  31.         MainWindow.setCentralWidget(self.centralwidget)
  32.         self.menubar = QtWidgets.QMenuBar(MainWindow)
  33.         self.menubar.setGeometry(QtCore.QRect(0, 0, 320, 21))
  34.         self.menubar.setObjectName("menubar")
  35.         MainWindow.setMenuBar(self.menubar)
  36.         self.statusbar = QtWidgets.QStatusBar(MainWindow)
  37.         self.statusbar.setObjectName("statusbar")
  38.         MainWindow.setStatusBar(self.statusbar)
  39.  
  40.         self.retranslateUi(MainWindow)
  41.         QtCore.QMetaObject.connectSlotsByName(MainWindow)
  42.  
  43.     def retranslateUi(self, MainWindow):
  44.         _translate = QtCore.QCoreApplication.translate
  45.         MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
  46.         self.pushButton.setText(_translate("MainWindow", "Resultado"))
  47.  
  48.  
  49. if __name__ == "__main__":
  50.     import sys
  51.     app = QtWidgets.QApplication(sys.argv)
  52.     MainWindow = QtWidgets.QMainWindow()
  53.     ui = Ui_MainWindow()
  54.     ui.setupUi(MainWindow)
  55.     MainWindow.show()
  56.     sys.exit(app.exec())


Slds. Daniel ☕☕☕
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-

Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5892
    • Picuino
Re:Donde se realiza la codificación en QT Designer.
« Respuesta #1 en: 20 de Septiembre de 2022, 16:59:10 »
Mira este enlace por si te ayuda: https://realpython.com/python-pyqt-gui-calculator/

Yo con las interfaces gráficas me pierdo. Lo veo demasiado complicado para lo poco que al final se consigue. Prefiero trabajar con Python en línea de comandos.

Saludos.

Desconectado Daniel1952

  • PIC16
  • ***
  • Mensajes: 127
Re:Donde se realiza la codificación en QT Designer.
« Respuesta #2 en: 20 de Septiembre de 2022, 17:15:38 »
El típico "se me callo la estantería" con lo que leo, me pareció que
no te llevabas bien con tkinter por ser muy básica y que utilizarías TQ
confiaba muchísimo que pudieras ayudarme, intentaré, por otro lado,
un fuerte abrazo...

Slds. Daniel ☕☕☕
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-

Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5892
    • Picuino
Re:Donde se realiza la codificación en QT Designer.
« Respuesta #3 en: 22 de Septiembre de 2022, 13:48:25 »
Yo para hacer ese tipo de formularios interactivos suelo utilizar HTML, CSS y JavaScript.
Es mucho más intuitivo y puedes visualizarlo en cualquier navegador.

Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5892
    • Picuino
Re:Donde se realiza la codificación en QT Designer.
« Respuesta #4 en: 22 de Septiembre de 2022, 14:38:29 »
Por ejemplo con el formulario adjunto.

Código: Text
  1. <!DOCTYPE html>
  2. <html lang="es-es">
  3.  
  4. <head>
  5.   <style>
  6.     .name { padding: 8px; min-width: 120px; display: inline-block; }
  7.     .input { padding: 8px; display: inline-block; }
  8.     input[type=text] { width: 64px; text-align: right; }
  9.     input[type=button] { margin: 20px 0 0 150px; }
  10.   </style>
  11.  
  12. </head>
  13.  
  14. <body>
  15.   <div class="row">
  16.   <div class="name">Primer número</div>
  17.   <div class="input"> <form> <input type="text" id="var_a"> </form> </div>
  18.   </div>
  19.  
  20.   <div class="row">
  21.   <div class="name">Segundo número</div>
  22.   <div class="input"> <form> <input type="text" id="var_b"> </form> </div>
  23.   </div>
  24.  
  25.   <div class="row">
  26.   <div class="name">Resultado</div>
  27.   <div class="input"> <form> <input type="text" disabled="disabled" id="out"> </form> </div>
  28.   </div>
  29.  
  30.   <div class="row">
  31.   <input type="button" value="Calcular" onclick="calc()">
  32.   </div>
  33.  
  34.   <script>
  35.     function calc() {
  36.       var_a = document.getElementById("var_a").value.replace(',', '.');
  37.       var_b = document.getElementById("var_b").value.replace(',', '.');
  38.       document.getElementById("out").value = (var_a * 1.0) + (var_b * 1.0);
  39.     }
  40.   </script>
  41.  
  42. </body>
  43.  
  44. </html>

Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5892
    • Picuino
Re:Donde se realiza la codificación en QT Designer.
« Respuesta #5 en: 22 de Septiembre de 2022, 14:40:05 »
Aquí un formulario mucho más completo para calcular valores rms:
https://rawgit.com/Picuino/picalc/master/rms_calculator.html

El formulario (HTML + CSS + JavaScript) está creado con Python a partir de este archivo fuente:

Código: YAML
  1. config:
  2.   title: Average and RMS value Calculator
  3.   author: Picuino
  4.   description: JavaScript calculator of average and RMS values
  5.   keywords: RMS, average, median, value, calculator
  6.  
  7.   width:
  8.      max: 640px
  9.      min: 320px
  10.      name: 7em
  11.      value: 5em
  12.      units: 2em
  13.      comment: 20em
  14.  
  15.   resolution: 5
  16.    
  17.  
  18. # *******************************************************************
  19.  
  20. rows:
  21. - type: image
  22.   name: waves.png
  23.   comment: Wave Types
  24.  
  25. - type: html
  26.   name: Horizontal line
  27.   code: |
  28.      {% raw %}
  29.       <hr /> <br />
  30.       {% endraw %}
  31.      
  32. - type: buttons
  33.   name: Values
  34.   buttons:
  35.   - { value: Reset,    onclick: button_reset() }
  36.   - { value: Clear,    onclick: button_clear() }
  37.   - { value: Copy URL, onclick: button_url_copy() }
  38.  
  39.  
  40. # ** INPUT PARAMETER **
  41.  
  42. - type: header
  43.   name: Maximum and Minimum values of wave (peak to peak)
  44.  
  45. - type: var
  46.   comment: Maximum value of signal
  47.   name: V_max
  48.   value: 5
  49.   unit: V
  50.  
  51. - type: var
  52.   comment: Minimum value of signal
  53.   name: V_min
  54.   value: 1
  55.   unit: V
  56.  
  57. - type: var
  58.   comment: Duty cycle
  59.   name: D
  60.   value: 50
  61.   unit: '%'
  62.   prefix: 0.01
  63.  
  64.  
  65. # ** SINE WAVE **
  66.  
  67. - type: header
  68.   name: Sine wave
  69.  
  70. - type: calc
  71.   comment: Average value of sine wave (offset)
  72.   name: V_offset
  73.   unit: V
  74.   id: V_offset1
  75.   calc: V_offset1 = V_min + 0.5 * (V_max - V_min)
  76.  
  77. - type: calc
  78.   comment: RMS value of sine wave (without offset)
  79.   name: V_sin_ac_rms
  80.   unit: V
  81.   calc: V_sin_ac_rms = Math.abs(V_max - V_min) * Math.sqrt(0.125)
  82.  
  83. - type: calc
  84.   comment: RMS value of sine wave (with offset)
  85.   name: V_sin_rms
  86.   unit: V
  87.   calc: V_sin_rms = Math.sqrt(V_sin_ac_rms * V_sin_ac_rms + V_offset1 * V_offset1)
  88.  
  89.  
  90. # ** TRIANGLE WAVE **
  91.  
  92. - type: header
  93.   name: Triangle wave
  94.  
  95. - type: calc
  96.   comment: Average value of Triangle wave (offset)
  97.   name: V_offset
  98.   unit: V
  99.   id: V_offset2
  100.   calc: V_offset2 = V_min + 0.5 * (V_max - V_min)
  101.  
  102. - type: calc
  103.   comment: RMS value of Triangle wave (without offset)
  104.   name: V_tri_ac_rms
  105.   unit: V
  106.   calc: V_tri_ac_rms = Math.abs(V_max - V_min) * Math.sqrt(1.0/12)
  107.  
  108. - type: calc
  109.   comment: RMS value of Triangle wave (with offset)
  110.   name: V_tri_rms
  111.   unit: V
  112.   calc: V_tri_rms = Math.sqrt(V_tri_ac_rms * V_tri_ac_rms + V_offset2 * V_offset2)
  113.  
  114.  
  115. # ** RECTIFIED SINE WAVE **
  116.  
  117. - type: header
  118.   name: Rectified Sine wave
  119.  
  120. - type: calc
  121.   comment: Average value of Rectified Sine wave (offset)
  122.   name: V_offset
  123.   unit: V
  124.   id: V_offset3
  125.   calc: V_offset3 = V_min + (V_max - V_min) * 2 * D / Math.PI
  126.  
  127. - type: calc
  128.   comment: RMS value of of Rectified Sine wave (without offset)
  129.   name: V_rsin_ac_rms
  130.   unit: V
  131.   calc: V_rsin_ac_rms = Math.abs(V_max - V_min) * Math.sqrt(D*(0.5 - 4.0 /(Math.PI*Math.PI)))
  132.  
  133. - type: calc
  134.   comment: RMS value of of Rectified Sine wave (with offset)
  135.   name: V_rsin_rms
  136.   unit: V
  137.   calc: V_rsin_rms = Math.sqrt(V_rsin_ac_rms * V_rsin_ac_rms + V_offset3 * V_offset3)
  138.  
  139.  
  140. # ** SAWTOOTH WAVE **
  141.  
  142. - type: header
  143.   name: Sawtooth wave
  144.  
  145. - type: calc
  146.   comment: Average value of Sawtooth wave (offset)
  147.   name: V_offset
  148.   unit: V
  149.   id: V_offset4
  150.   calc: V_offset4 = V_min + D * 0.5 * (V_max - V_min)
  151.  
  152. - type: calc
  153.   comment: RMS value of Sawtooth wave (without offset)
  154.   name: V_saw_ac_rms
  155.   unit: V
  156.   calc: V_saw_ac_rms = Math.abs(V_max - V_min) * Math.sqrt(D * 0.0833333)
  157.  
  158. - type: calc
  159.   comment: RMS value of Sawtooth wave (with offset)
  160.   name: V_saw_rms
  161.   unit: V
  162.   calc: V_saw_rms = Math.sqrt(V_saw_ac_rms * V_saw_ac_rms + V_offset4 * V_offset4)
  163.  
  164.  
  165. # ** SQUARE WAVE **
  166.  
  167. - type: header
  168.   name: Square wave
  169.  
  170. - type: calc
  171.   comment: Average value of Square wave (offset)
  172.   name: V_offset
  173.   unit: V
  174.   id: V_offset5
  175.   calc: V_offset5 = V_min +  D * (V_max - V_min)
  176.  
  177. - type: calc
  178.   comment: RMS value of Square wave (without offset)
  179.   name: V_sq_ac_rms
  180.   unit: V
  181.   calc:
  182.  - V_sq_rms = Math.sqrt(V_max*V_max*D + V_min*V_min*(1-D))
  183.   - V_sq_ac_rms = Math.sqrt(V_sq_rms*V_sq_rms - V_offset5 * V_offset5)
  184.  
  185. - type: calc
  186.   comment: RMS value of Square wave (with offset)
  187.   name: V_sq_rms
  188.   unit: V
  189.  
  190.  
  191. # ** ADD WAVES **
  192.  
  193. - type: header
  194.   name: Sum of waves RMS value
  195.  
  196. - type: var
  197.   comment: V_rms of Wave 1
  198.   name: V1_rms
  199.   value: 3
  200.   unit: V
  201.  
  202. - type: var
  203.   comment: V_rms of Wave 2
  204.   name: V2_rms
  205.   value: 4
  206.   unit: V
  207.  
  208. - type: var
  209.   comment: V_rms of Wave 3
  210.   name: V3_rms
  211.   unit: V
  212.  
  213. - type: var
  214.   comment: V_rms of Wave 4
  215.   name: V4_rms
  216.   unit: V
  217.  
  218. - type: var
  219.   comment: V_rms of Wave 5
  220.   name: V5_rms
  221.   unit: V
  222.  
  223. - type: calc
  224.   comment: RMS value of all waves
  225.   name: V_add_rms
  226.   unit: V
  227.   calc: V_add_rms = Math.sqrt(V1_rms*V1_rms + V2_rms*V2_rms + V3_rms*V3_rms + V4_rms*V4_rms + V5_rms*V5_rms)

He publicado el código aquí: https://github.com/picuino/picalc
« Última modificación: 22 de Septiembre de 2022, 15:03:54 por Picuino »


 

anything