PyQt5 QSpinBox: conectando dos cajas giratorias entre sí

En este artículo, veremos cómo podemos conectar dos cuadros giratorios entre sí de modo que cada cambio de valor de tiempo en un cuadro giratorio también se refleje en el otro cuadro giratorio, por ejemplo, cuando hayamos fijado la relación ancho-alto de la imagen y permitamos el usuario puede establecer el ancho y la altura usando el cuadro de número, ya que la proporción es fija, por lo tanto, el cambio en cualquier dimensión también debería reflejarse en la otra dimensión.

Ejemplo:
dos casillas giratorias conectadas entre sí de modo que el valor debe permanecer igual para cada cambio de valor que ocurra en cualquiera de las casillas giratorias.

Pasos para la implementación:

1. Cree dos cuadros de giro
2. Agregue geometría a ambos cuadros de giro
3. Agregue acción a cada cuadro de giro usando la señal valueChanged
4. Dentro de la primera acción del cuadro de giro, obtenga el valor actual del cuadro de giro y establezca este valor en el segundo cuadro de giro
5. Dentro de la acción del segundo cuadro de número, obtenga el valor actual del cuadro de número y establezca ese valor en el primer cuadro de número

A continuación se muestra la implementación.

# importing libraries
from PyQt5.QtWidgets import * 
from PyQt5 import QtCore, QtGui
from PyQt5.QtGui import * 
from PyQt5.QtCore import * 
import sys
  
  
class Window(QMainWindow):
  
    def __init__(self):
        super().__init__()
  
        # setting title
        self.setWindowTitle("Python ")
  
        # setting geometry
        self.setGeometry(100, 100, 600, 400)
  
        # calling method
        self.UiComponents()
  
        # showing all the widgets
        self.show()
  
        # method for widgets
    def UiComponents(self):
  
        # creating spin box
        self.spin1 = QSpinBox(self)
  
        # setting geometry to spin box
        self.spin1.setGeometry(100, 100, 150, 40)
  
        # setting prefix to spin
        self.spin1.setPrefix("Width : ")
  
        # add action to this spin box
        self.spin1.valueChanged.connect(self.action_spin1)
  
        # creating another spin box
        self.spin2 = QSpinBox(self)
  
        # setting geometry to spin box
        self.spin2.setGeometry(300, 100, 150, 40)
  
        # setting prefix to spin box
        self.spin2.setPrefix("Height : ")
  
        # add action to this spin box
        self.spin2.valueChanged.connect(self.action_spin2)
  
    # method called after editing finished
    def action_spin1(self):
  
        # getting current value of spin box
        current = self.spin1.value()
          
        # setting this value to second spin box
        self.spin2.setValue(current)
  
        # method called after editing finished
    def action_spin2(self):
        # getting current value of spin box
        current = self.spin2.value()
          
        # setting this value to the first spin box
        self.spin1.setValue(current)
  
  
# create pyqt5 app
App = QApplication(sys.argv)
  
# create the instance of our Window
window = Window()
  
# start the app
sys.exit(App.exec())

Producción :

Publicación traducida automáticamente

Artículo escrito por rakshitarora y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *