Yo sugeriría algo así. Puede recuperar el valor seleccionado en el cuadro combinado y utilizarlo, junto con un valor de edición de línea, en una cadena como una etiqueta para dar contexto al valor introducido en la edición de línea (con fines de visualización o interpretación del usuario), o convertir el valor de edición de línea en un número entero y manipularlo en función del valor del cuadro combinado (por ejemplo, con fines de cálculo).
Pruebe este código de ejemplo en la consola python de Qgis 3:
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
class Dlg(QDialog):
def __init__(self):
QDialog.__init__(self)
self.setGeometry(200, 200, 450, 250)
self.lbl1 = QLabel('Enter a weight:', self)
self.lbl1.move(5, 30)
self.le1 = QLineEdit(self)
self.le1.move(100, 30)
self.lbl2 = QLabel('Units:', self)
self.lbl2.move(250, 30)
self.cb1 = QComboBox(self)
self.cb1.addItems(['kilograms', 'pounds'])
self.cb1.move(300, 30)
self.lbl3 = QLabel('Value entered:', self)
self.lbl3.setFont(QFont('Arial', 18))
self.lbl3.adjustSize()
self.lbl3.move(75, 150)
self.btn_ok = QPushButton('Enter', self)
self.btn_ok.move(175, 85)
self.btn_ok.clicked.connect(self.enter)
def enter(self):
'''Retrieve values of line edit and combo box and either print them to a label etc for
display purposes (commented line below) or use them in a conditional statement'''
# self.lbl3.setText('Value entered: ' + self.le1.text() + ' ' + self.cb1.currentText())
if self.cb1.currentText() == 'kilograms':
self.lbl3.setText('Value entered: ' + self.le1.text()+'kg')
elif self.cb1.currentText() == 'pounds':
self.lbl3.setText('Value entered: ' + self.le1.text()+'lbs')
self.lbl3.adjustSize()
w = Dlg()
w.show()
Imágenes del diálogo resultante a continuación:
Además, digamos que está utilizando el valor introducido en la edición de línea en un cálculo. Podría utilizar el valor del cuadro combinado para manipular el valor de edición de línea en la sentencia condicional. Por ejemplo, si usted está trabajando en kilogramos y desea convertir los valores que se introdujeron en libras, usted podría hacer algo como:
if self.cb1.currentText() == 'pounds':
val = int(self.le1.text()) * 0.45
elif self.cb1.currentText() == 'kilograms':
val = int(self.le1.text())