class Example(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): vbox = QVBoxLayout() btn = QPushButton('Dialog', self) btn.setSizePolicy(QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Fixed) btn.move(20, 20) vbox.addWidget(btn) btn.clicked.connect(self.showDialog) self.lbl = QLabel('Knowledge only matters', self) self.lbl.move(130, 20) vbox.addWidget(self.lbl) self.setLayout(vbox) self.setGeometry(300, 300, 450, 350) self.setWindowTitle('Font dialog') self.show() def showDialog(self): font, ok = QFontDialog.getFont() if ok: self.lbl.setFont(font)
class Example(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): self.lbl = QLabel('Ubuntu', self) combo = QComboBox(self) combo.addItem('Ubuntu') combo.addItem('Mandriva') combo.addItem('Fedora') combo.addItem('Arch') combo.addItem('Gentoo') combo.move(50, 50) self.lbl.move(50, 150) combo.textActivated[str].connect(self.onActivated) self.setGeometry(300, 300, 450, 400) self.setWindowTitle('QComboBox') self.show() def onActivated(self, text): self.lbl.setText(text) self.lbl.adjustSize()
def _create_label(self, owner, labelText, yPos, x1, x2): lab = QLabel(owner) lab.setText(labelText) lab.move(x1, yPos) result = QLabel(owner) result.setText(' ' * 60) result.move(x2, yPos) return result
class Captura_Datos(QMainWindow): def __init__(self): QMainWindow.__init__(self) self.initGui() def initGui(self): self.setWindowTitle('My Application!!!') self.setFixedSize(600, 400) #self.showFullScreen() # Label self.lbl_saludo = QLabel('Bienvenido...', self) self.lbl_saludo.move(50, 50) # Menu self.menu_principal = self.menuBar() self.menu_archivo = self.menu_principal.addMenu('Archivo') self.menu_operaciones = self.menu_principal.addMenu('Operaciones') self.menu_ayuda = self.menu_principal.addMenu('Ayuda') # Archivo self.menu_item_salir = QAction('Salir', self) self.menu_item_salir.setShortcut('⌘D') self.menu_item_salir.triggered.connect(self.close) self.menu_archivo.addAction(self.menu_item_salir) # Operaciones self.menu_item_operaciones = QAction('Operaciones', self) self.menu_operaciones.addAction(self.menu_item_operaciones) # Ayuda self.menu_acerca_de = QAction('Acerca de MY Application.', self) self.menu_ayuda.addAction(self.menu_acerca_de) self.menu_ayuda.triggered.connect(self.mostrar_acerca_de) def mostrar_acerca_de(self): mensaje = QMessageBox() mensaje.setIcon(QMessageBox.Icon.Information) mensaje.setText( 'A cerca de My Application.\n\nPyQt6 App.\nDesarrollador: Mauricio Posada.\nVersión: 1.0.0\n2021.' ) mensaje.exec()
class Window(QWidget): def __init__(self): super().__init__() self.setWindowTitle('LazyDictionary') self.setWindowIcon(QIcon('book.png')) self.setFixedHeight(100) self.setFixedWidth(300) self.label = QLabel('word count: 0', self) self.label.setFont(QFont('san serif', 15)) self.label.move(90, 0) self.button() self.oneClick = True def button(self): self.btn0 = QPushButton('Start', self) self.btn0.setGeometry(0, 30, 150, 70) self.btn0.setStyleSheet('background-color:green') self.btn0.setFont(QFont('san serif', 15)) self.btn1 = QPushButton('Stop', self) self.btn1.setGeometry(150, 30, 150, 70) self.btn1.setStyleSheet('background-color:grey') self.btn1.setFont(QFont('san serif', 15)) self.btn0.clicked.connect(self.clickButton0) self.btn1.clicked.connect(self.clickButton1) def clickButton0(self): self.btn0.setStyleSheet('background-color:grey') self.btn1.setStyleSheet('background-color:red') if self.oneClick: main.start() self.oneClick = False def clickButton1(self): self.btn1.setStyleSheet('background-color:grey') self.btn0.setStyleSheet('background-color:green') main.end() self.oneClick = True def checkCount(self): text = 'word count: ' + str(htmlparse.wordCount) self.label.setText(text)
class Ventana_Calculadora(QMainWindow): def __init__(self): QMainWindow.__init__(self) self.initUi() def initUi(self): self.setWindowTitle('Calculadora Suma') self.setFixedSize(300, 400) self.lbl_numero_1 = QLabel('Número 1: ', self) self.lbl_numero_1.move(50, 50) self.lbl_numero_2 = QLabel('Número 2: ', self) self.lbl_numero_2.move(50, 100) self.txt_numero_1 = QLineEdit(self) self.txt_numero_1.setFixedWidth(100) self.txt_numero_1.move(150, 50) self.txt_numero_1.setValidator(QIntValidator()) self.txt_numero_2 = QLineEdit(self) self.txt_numero_2.setFixedWidth(100) self.txt_numero_2.move(150, 100) self.txt_numero_2.setValidator(QIntValidator()) self.btn_sumar = QPushButton('Sumar', self) self.btn_sumar.setFixedWidth(100) self.btn_sumar.move(100, 170) self.btn_sumar.clicked.connect(self.sumar) # Evento Click self.lbl_resultado = QLabel('Resultado: ', self) self.lbl_resultado.move(50, 250) self.lbl_resultado = QLabel(self) self.lbl_resultado.setFixedWidth(100) self.lbl_resultado.move(150, 250) #self.lbl_resultado.setEnabled(False) def sumar(self): numero_1 = int(self.txt_numero_1.text()) numero_2 = int(self.txt_numero_2.text()) suma = numero_1 + numero_2 self.lbl_resultado.setText(str(suma))
class FixedSlider(QSlider): def __init__(self): super(FixedSlider,self).__init__() self.setTickInterval(1) self.value_label=QLabel(self) self.value_label.setFixedSize(40,20) self.value_label.setAutoFillBackground(True) self.value_label.setStyleSheet("QLabel{background:transparent;font:8px}") self.value_label.setAlignment(Qt.Alignment.AlignCenter) self.value_label.setVisible(False) self.value_label.move(0,-5) def mousePressEvent(self,event:QMouseEvent): super(FixedSlider,self).mousePressEvent(event) if self.value_label.isVisible()==False: self.value_label.setVisible(True) self.value_label.setText(str(self.value()/10)) def mouseMoveEvent(self,event:QMouseEvent): super(FixedSlider,self).mouseMoveEvent(event) self.value_label.setText(str(self.value()/10)) self.value_label.move(int((self.width()-self.value_label.width())*self.value()/(self.maximum()-self.minimum())),-5) def mouseReleaseEvent(self,event:QMouseEvent): super(FixedSlider,self).mouseReleaseEvent(event) if self.value_label.isVisible()==True: self.value_label.setVisible(False)
class VentanaPrincipal(QMainWindow): def __init__(self): QMainWindow.__init__(self) self.initUi() def initUi(self): self.setWindowTitle('Demo Ventana de Saludo!!!') self.setFixedSize(400, 400) self.lbl_nombre = QLabel('Nombre: ', self) self.lbl_nombre.move(75, 50) self.txt_nombre = QLineEdit(self) self.txt_nombre.setFixedWidth(250) self.txt_nombre.move(75, 80) self.btn_saludar = QPushButton('Saludar', self) self.btn_saludar.setFixedWidth(250) self.btn_saludar.move(75, 120) self.btn_saludar.clicked.connect(self.mostrar_saludo) def mostrar_saludo(self): nombre = self.txt_nombre.text().strip() mensaje = QMessageBox() mensaje.setWindowTitle('Bienvenido!!!') if len(nombre): mensaje.setText(f'Hola, {nombre}!!!') mensaje.setIcon(QMessageBox.Icon.Information) else: mensaje.setText(f'No ha ingresado un nombre aún...') mensaje.setIcon(QMessageBox.Icon.Warning) mensaje.exec()
class Example(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): self.lbl = QLabel(self) qle = QLineEdit(self) qle.move(60, 100) self.lbl.move(60, 40) qle.textChanged[str].connect(self.onChanged) self.setGeometry(300, 300, 350, 250) self.setWindowTitle('QLineEdit') self.show() def onChanged(self, text): self.lbl.setText(text) self.lbl.adjustSize()
class Ventanaprincipal(QMainWindow): def __init__(self): QMainWindow.__init__(self) self.initGui() def initGui(self): self.setWindowTitle('Eliminacion de producto por ID') self.setFixedSize(400, 400) self.lbl_producto = QLabel('Producto:', self) self.lbl_producto.move(60, 120) self.txt_producto = QLineEdit(self) self.txt_producto.move(140, 120) self.txt_producto.setFixedWidth(200) self.txt_producto.setValidator(QIntValidator()) self.btn_eliminar = QPushButton('Eliminar', self) self.btn_eliminar.move(140, 170) self.btn_eliminar.setFixedWidth(200) self.btn_eliminar.clicked.connect(self.eliminar) self.lbl_resultado = QLabel('Resultado:', self) self.lbl_resultado.move(25, 250) self.lbl_resultado = QLabel(self) self.lbl_resultado.move(25, 270) self.lbl_resultado.setFixedWidth(350) #self.txt_resultado.setEnabled(False) def eliminar(self): confirmacion = QMessageBox(self) confirmacion.setText( f'Desea Eliminar el Producto con ID {self.txt_producto.text()}?') confirmacion.setIcon(QMessageBox.Icon.Question) confirmacion.setDetailedText( 'El producto se eliminará definitivamente...') confirmacion.setWindowTitle('Confirmación...') confirmacion.setStandardButtons(QMessageBox.StandardButton.Yes | QMessageBox.StandardButton.No) boton_yes = confirmacion.button(QMessageBox.StandardButton.Yes) confirmacion.exec() if confirmacion.clickedButton() == boton_yes: self.lbl_resultado.setText( f'Se ha eliminado el producto con ID {self.txt_producto.text()}.' ) else: self.lbl_resultado.setText( f'No se ha eliminado el producto con ID {self.txt_producto.text()}.' )
class ventanaPrincipal(QMainWindow): def __init__(self): QMainWindow.__init__(self) self.initGui() def initGui(self): self.setWindowTitle('Selección de vuelo.') self.setFixedSize(500, 400) self.lbl_seleccion_vuelo = QLabel('Seleccione la clase de su vuelo:', self) self.lbl_seleccion_vuelo.move(50, 70) self.lbl_seleccion_vuelo.setFixedWidth(200) self.rbtn_1_clase = QRadioButton('Primera Clase.', self) self.rbtn_1_clase.move(50, 130) self.rbtn_1_clase.setFixedWidth(250) self.rbtn_1_clase.toggled.connect(self.seleccionar_clase) self.rbtn_2_clase = QRadioButton('Clase Negocios. ', self) self.rbtn_2_clase.move(50, 160) self.rbtn_2_clase.setFixedWidth(250) self.rbtn_2_clase.toggled.connect(self.seleccionar_clase) self.rbtn_3_clase = QRadioButton('Clase Económica.', self) self.rbtn_3_clase.move(50, 190) self.rbtn_3_clase.setFixedWidth(250) self.rbtn_3_clase.toggled.connect(self.seleccionar_clase) self.lbl_resultado_titulo = QLabel('Resultado:', self) self.lbl_resultado_titulo.move(50, 250) self.lbl_resultado = QLabel(self) self.lbl_resultado.move(50, 280) self.lbl_resultado.setFixedWidth(400) def seleccionar_clase(self): costo_vuelo = 0 clase = '' if self.rbtn_1_clase.isChecked(): costo_vuelo = '2.000.0' clase = 'Primera Clase' elif self.rbtn_2_clase.isChecked(): costo_vuelo = '1.500.0' clase = 'Clase de Negocios' elif self.rbtn_3_clase.isChecked(): costo_vuelo = '1.000.0' clase = 'Clase Económica' self.lbl_resultado.setText( f'El costo de su tiquete de {clase}, es de USD ${costo_vuelo}')
def initUI(self): lbl1 = QLabel('ZetCode', self) lbl1.move(15, 10) lbl2 = QLabel('tutorials', self) lbl2.move(35, 40) lbl3 = QLabel('for programmers', self) lbl3.move(55, 70) self.setGeometry(300, 300, 350, 250) self.setWindowTitle('Absolute') self.show()
import sys # Import releveant PyQt6 widgets and QApplication from PyQt6.QtWidgets import QApplication, QLabel, QWidget # Create an instance of QApplication app = QApplication(sys.argv) # Create the application's GUI window = QWidget() window.setWindowTitle("Hello App") window.setGeometry(100,100,300,80) helloMsg = QLabel('<h1>Hello World</h1>',parent=window) helloMsg.move(60,15) # Show GUI window.show() # App's event loop sys.exit(app.exec())
def __init__(self): super().__init__() self.setFixedSize(800, 410) self.setWindowTitle("PyLX16A Servo Testing Software") self.port_selection_box = QComboBox(self) self.port_selection_box.setFixedSize(200, 27) self.port_selection_box.move(30, 65) port_selection_box_label = QLabel("Select Port:", self) port_selection_box_label.move(30, 35) self.port_selection_box_refresh_button = QPushButton("Refresh", self) self.port_selection_box_refresh_button.setFixedSize(60, 23) self.port_selection_box_refresh_button.move(170, 38) self.id_selection_box = QListWidget(self) self.id_selection_box.setFixedSize(200, 200) self.id_selection_box.move(30, 135) id_selection_box_label = QLabel("Connected Servos:", self) id_selection_box_label.setFixedWidth(200) id_selection_box_label.move(30, 105) self.id_selection_box_refresh_button = QPushButton("Refresh", self) self.id_selection_box_refresh_button.setFixedSize(60, 23) self.id_selection_box_refresh_button.move(170, 108) self.set_id_line_edit = QLineEdit(self) self.set_id_line_edit.setFixedSize(50, 27) self.set_id_line_edit.move(80, 355) set_id_line_edit_label = QLabel("Set ID:", self) set_id_line_edit_label.move(30, 355) set_id_line_edit_label.setFixedSize(50, 27) self.set_id_button = QPushButton("Change ID!", self) self.set_id_button.setFixedSize(85, 27) self.set_id_button.move(145, 355) self.position_slider = QSlider(Qt.Orientation.Horizontal, self) self.position_slider.setMinimum(0) self.position_slider.setMaximum(240) self.position_slider.setFixedWidth(200) self.position_slider.move(300, 55) self.position_slider_readout = QLabel("0.00°", self) self.position_slider_readout.setFixedWidth(50) self.position_slider_readout.move(450, 30) self.position_slider_readout.setAlignment( Qt.AlignmentFlag.AlignRight | Qt.AlignmentFlag.AlignVCenter) position_slider_label = QLabel("Angle (degrees):", self) position_slider_label.move(300, 30) self.position_offset_slider = QSlider(Qt.Orientation.Horizontal, self) self.position_offset_slider.setMinimum(-30) self.position_offset_slider.setMaximum(30) self.position_offset_slider.setFixedWidth(200) self.position_offset_slider.move(300, 125) self.position_offset_slider_readout = QLabel("0.00°", self) self.position_offset_slider_readout.setFixedWidth(50) self.position_offset_slider_readout.move(450, 100) self.position_offset_slider_readout.setAlignment( Qt.AlignmentFlag.AlignRight | Qt.AlignmentFlag.AlignVCenter) position_offset_slider_label = QLabel("Angle offset (degrees):", self) position_offset_slider_label.setFixedWidth(200) position_offset_slider_label.move(300, 100) self.angle_lower_limit_textentry = QLineEdit(self) self.angle_lower_limit_textentry.setFixedWidth(50) self.angle_lower_limit_textentry.move(450, 175) self.angle_lower_limit_textentry.setValidator( QIntValidator(0, 240, self)) self.angle_upper_limit_textentry = QLineEdit(self) self.angle_upper_limit_textentry.setFixedWidth(50) self.angle_upper_limit_textentry.move(450, 210) self.angle_upper_limit_textentry.setValidator( QIntValidator(0, 240, self)) self.angle_lower_limit_textentry_label = QLabel( "Lower Limit (degrees):", self) self.angle_lower_limit_textentry_label.move(300, 175) self.angle_lower_limit_textentry_label.setFixedWidth(150) self.angle_upper_limit_textentry_label = QLabel( "Upper Limit (degrees):", self) self.angle_upper_limit_textentry_label.move(300, 210) self.angle_upper_limit_textentry_label.setFixedWidth(150) self.vin_lower_limit_textentry = QLineEdit(self) self.vin_lower_limit_textentry.setFixedWidth(50) self.vin_lower_limit_textentry.move(450, 265) self.vin_lower_limit_textentry.setValidator( QIntValidator(4500, 12000, self)) self.vin_upper_limit_textentry = QLineEdit(self) self.vin_upper_limit_textentry.setFixedWidth(50) self.vin_upper_limit_textentry.move(450, 300) self.vin_upper_limit_textentry.setValidator( QIntValidator(4500, 12000, self)) self.vin_lower_limit_textentry_label = QLabel( "Voltage Lower Limit (mV):", self) self.vin_lower_limit_textentry_label.move(300, 265) self.vin_lower_limit_textentry_label.setFixedWidth(150) self.vin_upper_limit_textentry_label = QLabel( "Voltage Upper Limit (mV):", self) self.vin_upper_limit_textentry_label.move(300, 300) self.vin_upper_limit_textentry_label.setFixedWidth(150) self.temp_limit_textentry = QLineEdit(self) self.temp_limit_textentry.setFixedWidth(50) self.temp_limit_textentry.move(450, 355) self.temp_limit_textentry.setValidator(QIntValidator(50, 100, self)) self.temp_limit_textentry_label = QLabel("Temp Limit (°C):", self) self.temp_limit_textentry_label.move(300, 355) self.temp_limit_textentry_label.setFixedWidth(150) self.servo_mode_radio_button = QRadioButton("Servo Mode", self) self.servo_mode_radio_button.move(565, 50) self.motor_mode_radio_button = QRadioButton("Motor Mode", self) self.motor_mode_radio_button.move(565, 75) self.motor_speed_slider = QSlider(Qt.Orientation.Horizontal, self) self.motor_speed_slider.setMinimum(-1000) self.motor_speed_slider.setMaximum(1000) self.motor_speed_slider.setFixedWidth(200) self.motor_speed_slider.move(565, 125) motor_speed_slider_label = QLabel("Motor Speed:", self) motor_speed_slider_label.move(565, 100) self.torque_enabled_checkbox = QCheckBox("Torque Enabled", self) self.torque_enabled_checkbox.move(565, 175) self.torque_enabled_checkbox.setFixedWidth(200) self.led_enabled_checkbox = QCheckBox("LED Enabled", self) self.led_enabled_checkbox.move(565, 210) self.led_enabled_checkbox.setFixedWidth(200) self.led_over_temp_checkbox = QCheckBox("LED Over Temperature", self) self.led_over_temp_checkbox.move(565, 258) self.led_over_temp_checkbox.setFixedWidth(200) self.led_over_voltage_checkbox = QCheckBox("LED Over Voltage", self) self.led_over_voltage_checkbox.move(565, 283) self.led_over_voltage_checkbox.setFixedWidth(200) self.led_rotor_locked_checkbox = QCheckBox("LED Rotor Locked", self) self.led_rotor_locked_checkbox.move(565, 308) self.led_rotor_locked_checkbox.setFixedWidth(200) self.physical_position_readout = QLabel("--°", self) self.physical_position_readout.move(565, 367) self.physical_position_readout.setFixedWidth(200) self.physical_position_readout_label = QLabel("Position", self) self.physical_position_readout_label.move(565, 347) self.temperature_readout = QLabel("-- °C", self) self.temperature_readout.move(635, 367) self.temperature_readout.setFixedWidth(200) self.temperature_readout_label = QLabel("Temperature", self) self.temperature_readout_label.move(635, 347) self.voltage_readout = QLabel("-- V", self) self.voltage_readout.move(730, 367) self.voltage_readout.setFixedWidth(200) self.voltage_readout_label = QLabel("Voltage", self) self.voltage_readout_label.move(730, 347) self.readout_update_timer = QTimer(self) self.readout_update_timer.timeout.connect(self.update_readouts) self.readout_update_timer.start(250) self.active_servo: LX16A = None self.position_slider.setValue(0) self.position_offset_slider.setValue(0) self.motor_speed_slider.setValue(0) self.id_selection_box_refresh_button.setEnabled(False) self.disable_widgets() self.port_selection_box.currentTextChanged.connect( self.port_selection_box_changed) self.port_selection_box_refresh_button.clicked.connect( self.port_refresh_button_clicked) self.id_selection_box.currentTextChanged.connect( self.id_selection_box_changed) self.id_selection_box_refresh_button.clicked.connect( self.id_refresh_button_clicked) self.set_id_button.pressed.connect(self.id_updated) self.position_slider.sliderMoved.connect(self.position_slider_updated) self.position_offset_slider.sliderMoved.connect( self.position_offset_slider_updated) self.angle_lower_limit_textentry.textChanged.connect( self.angle_lower_limit_updated) self.angle_upper_limit_textentry.textChanged.connect( self.angle_upper_limit_updated) self.vin_lower_limit_textentry.textChanged.connect( self.vin_lower_limit_updated) self.vin_upper_limit_textentry.textChanged.connect( self.vin_upper_limit_updated) self.temp_limit_textentry.textChanged.connect(self.temp_limit_updated) self.servo_mode_radio_button.toggled.connect( self.servo_mode_radio_button_toggled) self.motor_mode_radio_button.toggled.connect( self.motor_mode_radio_button_toggled) self.motor_speed_slider.valueChanged.connect( self.motor_speed_slider_updated) self.torque_enabled_checkbox.stateChanged.connect( self.torque_enabled_checkbox_toggled) self.led_enabled_checkbox.stateChanged.connect( self.led_enabled_checkbox_toggled) self.led_over_temp_checkbox.stateChanged.connect( self.led_error_triggers_checkbox_toggled) self.led_over_voltage_checkbox.stateChanged.connect( self.led_error_triggers_checkbox_toggled) self.led_rotor_locked_checkbox.stateChanged.connect( self.led_error_triggers_checkbox_toggled) self.scan_for_ports()
class MainWindow(QMainWindow): def __init__(self): super().__init__() self.setFixedSize(800, 410) self.setWindowTitle("PyLX16A Servo Testing Software") self.port_selection_box = QComboBox(self) self.port_selection_box.setFixedSize(200, 27) self.port_selection_box.move(30, 65) port_selection_box_label = QLabel("Select Port:", self) port_selection_box_label.move(30, 35) self.port_selection_box_refresh_button = QPushButton("Refresh", self) self.port_selection_box_refresh_button.setFixedSize(60, 23) self.port_selection_box_refresh_button.move(170, 38) self.id_selection_box = QListWidget(self) self.id_selection_box.setFixedSize(200, 200) self.id_selection_box.move(30, 135) id_selection_box_label = QLabel("Connected Servos:", self) id_selection_box_label.setFixedWidth(200) id_selection_box_label.move(30, 105) self.id_selection_box_refresh_button = QPushButton("Refresh", self) self.id_selection_box_refresh_button.setFixedSize(60, 23) self.id_selection_box_refresh_button.move(170, 108) self.set_id_line_edit = QLineEdit(self) self.set_id_line_edit.setFixedSize(50, 27) self.set_id_line_edit.move(80, 355) set_id_line_edit_label = QLabel("Set ID:", self) set_id_line_edit_label.move(30, 355) set_id_line_edit_label.setFixedSize(50, 27) self.set_id_button = QPushButton("Change ID!", self) self.set_id_button.setFixedSize(85, 27) self.set_id_button.move(145, 355) self.position_slider = QSlider(Qt.Orientation.Horizontal, self) self.position_slider.setMinimum(0) self.position_slider.setMaximum(240) self.position_slider.setFixedWidth(200) self.position_slider.move(300, 55) self.position_slider_readout = QLabel("0.00°", self) self.position_slider_readout.setFixedWidth(50) self.position_slider_readout.move(450, 30) self.position_slider_readout.setAlignment( Qt.AlignmentFlag.AlignRight | Qt.AlignmentFlag.AlignVCenter) position_slider_label = QLabel("Angle (degrees):", self) position_slider_label.move(300, 30) self.position_offset_slider = QSlider(Qt.Orientation.Horizontal, self) self.position_offset_slider.setMinimum(-30) self.position_offset_slider.setMaximum(30) self.position_offset_slider.setFixedWidth(200) self.position_offset_slider.move(300, 125) self.position_offset_slider_readout = QLabel("0.00°", self) self.position_offset_slider_readout.setFixedWidth(50) self.position_offset_slider_readout.move(450, 100) self.position_offset_slider_readout.setAlignment( Qt.AlignmentFlag.AlignRight | Qt.AlignmentFlag.AlignVCenter) position_offset_slider_label = QLabel("Angle offset (degrees):", self) position_offset_slider_label.setFixedWidth(200) position_offset_slider_label.move(300, 100) self.angle_lower_limit_textentry = QLineEdit(self) self.angle_lower_limit_textentry.setFixedWidth(50) self.angle_lower_limit_textentry.move(450, 175) self.angle_lower_limit_textentry.setValidator( QIntValidator(0, 240, self)) self.angle_upper_limit_textentry = QLineEdit(self) self.angle_upper_limit_textentry.setFixedWidth(50) self.angle_upper_limit_textentry.move(450, 210) self.angle_upper_limit_textentry.setValidator( QIntValidator(0, 240, self)) self.angle_lower_limit_textentry_label = QLabel( "Lower Limit (degrees):", self) self.angle_lower_limit_textentry_label.move(300, 175) self.angle_lower_limit_textentry_label.setFixedWidth(150) self.angle_upper_limit_textentry_label = QLabel( "Upper Limit (degrees):", self) self.angle_upper_limit_textentry_label.move(300, 210) self.angle_upper_limit_textentry_label.setFixedWidth(150) self.vin_lower_limit_textentry = QLineEdit(self) self.vin_lower_limit_textentry.setFixedWidth(50) self.vin_lower_limit_textentry.move(450, 265) self.vin_lower_limit_textentry.setValidator( QIntValidator(4500, 12000, self)) self.vin_upper_limit_textentry = QLineEdit(self) self.vin_upper_limit_textentry.setFixedWidth(50) self.vin_upper_limit_textentry.move(450, 300) self.vin_upper_limit_textentry.setValidator( QIntValidator(4500, 12000, self)) self.vin_lower_limit_textentry_label = QLabel( "Voltage Lower Limit (mV):", self) self.vin_lower_limit_textentry_label.move(300, 265) self.vin_lower_limit_textentry_label.setFixedWidth(150) self.vin_upper_limit_textentry_label = QLabel( "Voltage Upper Limit (mV):", self) self.vin_upper_limit_textentry_label.move(300, 300) self.vin_upper_limit_textentry_label.setFixedWidth(150) self.temp_limit_textentry = QLineEdit(self) self.temp_limit_textentry.setFixedWidth(50) self.temp_limit_textentry.move(450, 355) self.temp_limit_textentry.setValidator(QIntValidator(50, 100, self)) self.temp_limit_textentry_label = QLabel("Temp Limit (°C):", self) self.temp_limit_textentry_label.move(300, 355) self.temp_limit_textentry_label.setFixedWidth(150) self.servo_mode_radio_button = QRadioButton("Servo Mode", self) self.servo_mode_radio_button.move(565, 50) self.motor_mode_radio_button = QRadioButton("Motor Mode", self) self.motor_mode_radio_button.move(565, 75) self.motor_speed_slider = QSlider(Qt.Orientation.Horizontal, self) self.motor_speed_slider.setMinimum(-1000) self.motor_speed_slider.setMaximum(1000) self.motor_speed_slider.setFixedWidth(200) self.motor_speed_slider.move(565, 125) motor_speed_slider_label = QLabel("Motor Speed:", self) motor_speed_slider_label.move(565, 100) self.torque_enabled_checkbox = QCheckBox("Torque Enabled", self) self.torque_enabled_checkbox.move(565, 175) self.torque_enabled_checkbox.setFixedWidth(200) self.led_enabled_checkbox = QCheckBox("LED Enabled", self) self.led_enabled_checkbox.move(565, 210) self.led_enabled_checkbox.setFixedWidth(200) self.led_over_temp_checkbox = QCheckBox("LED Over Temperature", self) self.led_over_temp_checkbox.move(565, 258) self.led_over_temp_checkbox.setFixedWidth(200) self.led_over_voltage_checkbox = QCheckBox("LED Over Voltage", self) self.led_over_voltage_checkbox.move(565, 283) self.led_over_voltage_checkbox.setFixedWidth(200) self.led_rotor_locked_checkbox = QCheckBox("LED Rotor Locked", self) self.led_rotor_locked_checkbox.move(565, 308) self.led_rotor_locked_checkbox.setFixedWidth(200) self.physical_position_readout = QLabel("--°", self) self.physical_position_readout.move(565, 367) self.physical_position_readout.setFixedWidth(200) self.physical_position_readout_label = QLabel("Position", self) self.physical_position_readout_label.move(565, 347) self.temperature_readout = QLabel("-- °C", self) self.temperature_readout.move(635, 367) self.temperature_readout.setFixedWidth(200) self.temperature_readout_label = QLabel("Temperature", self) self.temperature_readout_label.move(635, 347) self.voltage_readout = QLabel("-- V", self) self.voltage_readout.move(730, 367) self.voltage_readout.setFixedWidth(200) self.voltage_readout_label = QLabel("Voltage", self) self.voltage_readout_label.move(730, 347) self.readout_update_timer = QTimer(self) self.readout_update_timer.timeout.connect(self.update_readouts) self.readout_update_timer.start(250) self.active_servo: LX16A = None self.position_slider.setValue(0) self.position_offset_slider.setValue(0) self.motor_speed_slider.setValue(0) self.id_selection_box_refresh_button.setEnabled(False) self.disable_widgets() self.port_selection_box.currentTextChanged.connect( self.port_selection_box_changed) self.port_selection_box_refresh_button.clicked.connect( self.port_refresh_button_clicked) self.id_selection_box.currentTextChanged.connect( self.id_selection_box_changed) self.id_selection_box_refresh_button.clicked.connect( self.id_refresh_button_clicked) self.set_id_button.pressed.connect(self.id_updated) self.position_slider.sliderMoved.connect(self.position_slider_updated) self.position_offset_slider.sliderMoved.connect( self.position_offset_slider_updated) self.angle_lower_limit_textentry.textChanged.connect( self.angle_lower_limit_updated) self.angle_upper_limit_textentry.textChanged.connect( self.angle_upper_limit_updated) self.vin_lower_limit_textentry.textChanged.connect( self.vin_lower_limit_updated) self.vin_upper_limit_textentry.textChanged.connect( self.vin_upper_limit_updated) self.temp_limit_textentry.textChanged.connect(self.temp_limit_updated) self.servo_mode_radio_button.toggled.connect( self.servo_mode_radio_button_toggled) self.motor_mode_radio_button.toggled.connect( self.motor_mode_radio_button_toggled) self.motor_speed_slider.valueChanged.connect( self.motor_speed_slider_updated) self.torque_enabled_checkbox.stateChanged.connect( self.torque_enabled_checkbox_toggled) self.led_enabled_checkbox.stateChanged.connect( self.led_enabled_checkbox_toggled) self.led_over_temp_checkbox.stateChanged.connect( self.led_error_triggers_checkbox_toggled) self.led_over_voltage_checkbox.stateChanged.connect( self.led_error_triggers_checkbox_toggled) self.led_rotor_locked_checkbox.stateChanged.connect( self.led_error_triggers_checkbox_toggled) self.scan_for_ports() def disable_widgets(self): self.set_id_line_edit.setEnabled(False) self.position_slider.setEnabled(False) self.position_offset_slider.setEnabled(False) self.angle_lower_limit_textentry.setEnabled(False) self.angle_upper_limit_textentry.setEnabled(False) self.vin_lower_limit_textentry.setEnabled(False) self.vin_upper_limit_textentry.setEnabled(False) self.temp_limit_textentry.setEnabled(False) self.servo_mode_radio_button.setEnabled(False) self.motor_mode_radio_button.setEnabled(False) self.motor_speed_slider.setEnabled(False) self.torque_enabled_checkbox.setEnabled(False) self.led_enabled_checkbox.setEnabled(False) self.led_over_temp_checkbox.setEnabled(False) self.led_over_voltage_checkbox.setEnabled(False) self.led_rotor_locked_checkbox.setEnabled(False) def enable_widgets(self): self.set_id_line_edit.setEnabled(True) self.position_slider.setEnabled(True) self.position_offset_slider.setEnabled(True) self.angle_lower_limit_textentry.setEnabled(True) self.angle_upper_limit_textentry.setEnabled(True) self.vin_lower_limit_textentry.setEnabled(True) self.vin_upper_limit_textentry.setEnabled(True) self.temp_limit_textentry.setEnabled(True) self.servo_mode_radio_button.setEnabled(True) self.motor_mode_radio_button.setEnabled(True) self.motor_speed_slider.setEnabled(True) self.torque_enabled_checkbox.setEnabled(True) self.led_enabled_checkbox.setEnabled(True) self.led_over_temp_checkbox.setEnabled(True) self.led_over_voltage_checkbox.setEnabled(True) self.led_rotor_locked_checkbox.setEnabled(True) def clear_servo(self): self.active_servo = None @catch_disconnection def set_servo_id(self, id_): if not id_.isdigit(): return self.active_servo = LX16A(int(id_)) self.active_servo.enable_torque() self.position_slider.setValue( int(self.active_servo.get_physical_angle())) self.position_slider_readout.setText( f"{int(self.active_servo.get_physical_angle() * 25 / 6) * 6 / 25:0.2f}°" ) self.position_offset_slider.setValue( int(self.active_servo.get_angle_offset())) self.position_offset_slider_readout.setText( f"{int(self.active_servo.get_angle_offset() * 25 / 6) * 6 / 25:0.2f}°" ) self.angle_lower_limit_textentry.setText( str(int(self.active_servo.get_angle_limits()[0]))) self.angle_upper_limit_textentry.setText( str(int(self.active_servo.get_angle_limits()[1]))) self.vin_lower_limit_textentry.setText( str(self.active_servo.get_vin_limits()[0])) self.vin_upper_limit_textentry.setText( str(self.active_servo.get_vin_limits()[1])) self.temp_limit_textentry.setText( str(self.active_servo.get_temp_limit())) self.motor_speed_slider.setValue(self.active_servo.get_motor_speed( ) if self.active_servo.is_motor_mode() else 0) if self.active_servo.is_motor_mode(): self.motor_mode_radio_button.setChecked(True) else: self.servo_mode_radio_button.setChecked(True) self.motor_speed_slider.setEnabled(self.active_servo.is_motor_mode()) self.torque_enabled_checkbox.setChecked( self.active_servo.is_torque_enabled()) self.led_enabled_checkbox.setChecked( self.active_servo.is_led_power_on()) self.led_over_temp_checkbox.setChecked( self.active_servo.get_led_error_triggers()[0]) self.led_over_voltage_checkbox.setChecked( self.active_servo.get_led_error_triggers()[1]) self.led_rotor_locked_checkbox.setChecked( self.active_servo.get_led_error_triggers()[2]) @catch_disconnection def scan_for_servos(self, port): self.setCursor(Qt.CursorShape.WaitCursor) LX16A.initialize(port) self.id_selection_box.clear() for i in range(0, 254): try: servo = LX16A(i) self.id_selection_box.addItem(str(i)) except: pass self.setCursor(Qt.CursorShape.ArrowCursor) @catch_disconnection def scan_for_ports(self): ports = serial.tools.list_ports.comports() for port in ports: self.port_selection_box.addItem(port.device) @catch_disconnection def update_readouts(self): if self.active_servo is None: return try: self.physical_position_readout.setText( f"{self.active_servo.get_physical_angle():0.2f}°") self.temperature_readout.setText( f"{self.active_servo.get_temp()} °C") self.voltage_readout.setText( f"{self.active_servo.get_vin() / 1000} V") except (ServoTimeoutError, ServoChecksumError): pass @catch_disconnection def id_updated(self): new_id = self.set_id_line_edit.text() try: servo = LX16A(int(new_id)) except ServoTimeoutError: # Meaning this ID is not taken self.active_servo.set_id(int(new_id)) self.id_selection_box.item( self.id_selection_box.currentRow()).setText(new_id) return QMessageBox.warning(None, "Error", "ID already taken") @catch_disconnection def position_slider_updated(self, pos): if float(self.voltage_readout.text()[:-2]) < 5: QMessageBox.warning( None, "Error", "The voltage going through the servo is too low. Is your battery powered on?", ) return self.active_servo.move(pos) self.position_slider_readout.setText( f"{int(pos * 25 / 6) * 6 / 25:0.2f}°") @catch_disconnection def position_offset_slider_updated(self, pos): self.active_servo.set_angle_offset(pos) self.position_offset_slider_readout.setText( f"{int(pos * 25 / 6) * 6 / 25:0.2f}°") @catch_disconnection def angle_lower_limit_updated(self, text): if (QIntValidator(0, 240, self).validate(text, 0) != QIntValidator.State.Acceptable): return if int(text) > int(self.angle_upper_limit_textentry.text()): return self.active_servo.set_angle_limits( int(text), int(self.angle_upper_limit_textentry.text())) @catch_disconnection def angle_upper_limit_updated(self, text): if (QIntValidator(0, 240, self).validate(text, 0) != QIntValidator.State.Acceptable): return if int(text) < int(self.angle_lower_limit_textentry.text()): return self.active_servo.set_angle_limits( int(self.angle_lower_limit_textentry.text()), int(text)) @catch_disconnection def vin_lower_limit_updated(self, text): if (QIntValidator(4500, 12000, self).validate(text, 0) != QIntValidator.State.Acceptable): return if int(text) > int(self.vin_upper_limit_textentry.text()): return self.active_servo.set_vin_limits( int(text), int(self.vin_upper_limit_textentry.text())) @catch_disconnection def vin_upper_limit_updated(self, text): if (QIntValidator(4500, 12000, self).validate(text, 0) != QIntValidator.State.Acceptable): return if int(text) < int(self.vin_lower_limit_textentry.text()): return self.active_servo.set_vin_limits( int(self.vin_lower_limit_textentry.text()), int(text)) @catch_disconnection def temp_limit_updated(self, text): if (QIntValidator(50, 100, self).validate(text, 0) != QIntValidator.State.Acceptable): return self.active_servo.set_temp_limit(int(text)) @catch_disconnection def servo_mode_radio_button_toggled(self, checked): if checked: self.active_servo.servo_mode() self.motor_speed_slider.setEnabled(False) self.position_slider.setEnabled(True) self.position_offset_slider.setEnabled(True) else: self.active_servo.motor_mode(int(self.motor_speed_slider.value())) self.motor_speed_slider.setEnabled(True) self.position_slider.setEnabled(False) self.position_offset_slider.setEnabled(False) @catch_disconnection def motor_mode_radio_button_toggled(self, checked): if checked: self.active_servo.motor_mode(int(self.motor_speed_slider.value())) self.motor_speed_slider.setEnabled(True) self.position_slider.setEnabled(False) self.position_offset_slider.setEnabled(False) else: self.active_servo.servo_mode() self.motor_speed_slider.setEnabled(False) self.position_slider.setEnabled(True) self.position_offset_slider.setEnabled(True) @catch_disconnection def motor_speed_slider_updated(self, pos): self.active_servo.motor_mode(pos) @catch_disconnection def torque_enabled_checkbox_toggled(self, checked): if checked: self.active_servo.enable_torque() else: self.active_servo.disable_torque() self.position_slider.setEnabled(checked) self.position_offset_slider.setEnabled(checked) self.servo_mode_radio_button.setEnabled(checked) self.motor_mode_radio_button.setEnabled(checked) self.motor_speed_slider.setEnabled(checked) @catch_disconnection def led_enabled_checkbox_toggled(self, checked): if checked: self.active_servo.led_power_on() else: self.active_servo.led_power_off() @catch_disconnection def led_error_triggers_checkbox_toggled(self): self.active_servo.set_led_error_triggers( self.led_over_voltage_checkbox.isChecked(), self.led_over_temp_checkbox.isChecked(), self.led_rotor_locked_checkbox.isChecked(), ) @catch_disconnection def port_refresh_button_clicked(self, value): self.id_selection_box_refresh_button.setEnabled(False) self.disable_widgets() self.port_selection_box.clear() self.id_selection_box.clear() self.scan_for_ports() @catch_disconnection def id_refresh_button_clicked(self, value): self.disable_widgets() self.id_selection_box.clear() self.scan_for_servos(self.port_selection_box.currentText()) @catch_disconnection def port_selection_box_changed(self, text): if text == "": return self.id_selection_box_refresh_button.setEnabled(True) self.disable_widgets() self.id_selection_box.clear() self.clear_servo() self.scan_for_servos(text) @catch_disconnection def id_selection_box_changed(self, text): if text == "": return self.enable_widgets() self.set_servo_id(text)
class Ventana_Calculadora(QMainWindow): def __init__(self): QMainWindow.__init__(self) self.initUi() def initUi(self): self.setWindowTitle('Calculadora Suma 💻') self.setFixedSize(300, 400) self.lbl_numero_1 = QLabel('Número 1: ', self) self.lbl_numero_1.move(50, 50) self.lbl_numero_2 = QLabel('Número 2: ', self) self.lbl_numero_2.move(50, 100) self.txt_numero_1 = QLineEdit(self) self.txt_numero_1.setFixedWidth(100) self.txt_numero_1.move(150, 50) self.txt_numero_2 = QLineEdit(self) self.txt_numero_2.setFixedWidth(100) self.txt_numero_2.move(150, 100) self.btn_sumar = QPushButton('Sumar', self) self.btn_sumar.setFixedWidth(100) self.btn_sumar.move(100, 170) self.btn_sumar.clicked.connect(self.sumar) # Evento Click self.lbl_resultado = QLabel('Resultado: ', self) self.lbl_resultado.move(50, 250) self.lbl_resultado = QLabel(self) self.lbl_resultado.setFixedWidth(100) self.lbl_resultado.move(150, 250) #self.lbl_resultado.setEnabled(False) def sumar(self): numero_1 = self.txt_numero_1.text().strip() numero_2 = self.txt_numero_2.text().strip() mensaje = QMessageBox() mensaje.setWindowTitle('Algo salió mal...') if len(numero_1): if len(numero_2): try: numero_1 = float(numero_1) except: mensaje.setIcon(QMessageBox.Icon.Warning) mensaje.setText( 'El número 1 debe ser un valor numérico...') mensaje.exec() return try: numero_2 = float(numero_2) except: mensaje.setIcon(QMessageBox.Icon.Warning) mensaje.setText( 'El número 2 debe ser un valor numérico...') mensaje.exec() return resultado = numero_1 + numero_2 self.lbl_resultado.setText(str(resultado)) else: mensaje.setIcon(QMessageBox.Icon.Warning) mensaje.setText('Debes digitar el Número 2...') mensaje.exec() else: mensaje.setIcon(QMessageBox.Icon.Warning) mensaje.setText('Debes digitar el Número 1...') mensaje.exec()
class Captura_Datos(QMainWindow): def __init__(self): QMainWindow.__init__(self) self.initGui() def initGui(self): self.setWindowTitle('Aplicación Captura de Datos') self.setFixedSize(400, 400) #self.showFullScreen() # Botones self.btn_nombre = QPushButton('Nombre Completo', self) self.btn_nombre.setFixedWidth(200) self.btn_nombre.move(100, 30) self.btn_nombre.clicked.connect(self.capturar_nombre) self.btn_edad = QPushButton('Edad', self) self.btn_edad.setFixedWidth(200) self.btn_edad.move(100, 60) self.btn_nombre.clicked.connect(self.capturar_edad) self.btn_ahorros = QPushButton('Ahorros', self) self.btn_ahorros.setFixedWidth(200) self.btn_ahorros.move(100, 90) self.btn_nombre.clicked.connect(self.capturar_ahorros) self.btn_color = QPushButton('Color', self) self.btn_color.setFixedWidth(200) self.btn_color.move(100, 120) self.btn_nombre.clicked.connect(self.capturar_color) # Resultado self.lbl_resultado = QLabel('Información personal:', self) self.lbl_resultado.move(100, 180) self.lbl_resultado.setFixedWidth(200) # Etiquetas de datos self.lbl_nombre = QLabel('Nombre Completo:', self) self.lbl_nombre.move(50, 240) self.lbl_nombre.setFixedWidth(200) self.lbl_nombre = QLabel('Edad:', self) self.lbl_nombre.move(50, 270) self.lbl_nombre.setFixedWidth(200) self.lbl_nombre = QLabel('Ahorros:', self) self.lbl_nombre.move(50, 300) self.lbl_nombre.setFixedWidth(200) self.lbl_nombre = QLabel('Color:', self) self.lbl_nombre.move(50, 330) self.lbl_nombre.setFixedWidth(200) # Etiquetas de resultados self.lbl_nombre_result = QLabel(self) self.lbl_nombre_result.move(200, 240) self.lbl_nombre_result.setFixedWidth(200) self.lbl_edad_result = QLabel(self) self.lbl_edad_result.move(200, 270) self.lbl_edad_result.setFixedWidth(200) self.lbl_ahorros_result = QLabel(self) self.lbl_ahorros_result.move(200, 300) self.lbl_ahorros_result.setFixedWidth(200) self.lbl_color_result = QLabel(self) self.lbl_color_result.move(200, 330) self.lbl_color_result.setFixedWidth(200) # Menu self.menu_principal = self.menuBar() self.menu_archivo = self.menu_principal.addMenu('Archivo') self.menu_operaciones = self.menu_principal.addMenu('Operaciones') self.menu_ayuda = self.menu_principal.addMenu('Ayuda') # Archivo self.menu_item_salir = QAction('Salir', self) self.menu_item_salir.setShortcut('⌘D') self.menu_item_salir.triggered.connect(self.close) self.menu_archivo.addAction(self.menu_item_salir) # Operaciones self.menu_item_operaciones = QAction('Operaciones', self) self.menu_operaciones.addAction(self.menu_item_operaciones) # Ayuda self.menu_acerca_de = QAction('Acerca de Aplicación Captura de Datos.', self) self.menu_ayuda.addAction(self.menu_acerca_de) self.menu_ayuda.triggered.connect(self.mostrar_acerca_de) def mostrar_acerca_de(self): mensaje = QMessageBox() mensaje.setIcon(QMessageBox.Icon.Information) mensaje.setText( 'A cerca de Aplicación captura de datos.\n\nAplicacion PyQt6.\nDesarrollador: Mauricio Posada.\nVersión: 1.0.0\n2021.' ) mensaje.exec() def capturar_nombre(self): nombre, ok = QInputDialog.getText(self, 'Captura de datos.', 'Escribe tu nombre completo:') if ok: nombre = nombre.strip() if len(nombre): self.lbl_nombre_result.setText(nombre) def capturar_edad(self): edad, ok = QInputDialog.getInt(self, 'Captura de datos.', 'Escribe tu edad:', 10, 1, 80) if ok: self.lbl_edad_result.setText(str(edad)) def capturar_ahorros(self): ahorros, ok = QInputDialog.getDouble( self, 'Captura de datos.', 'Escribe tu cantidad de ahorros:', 0, 1000, 1000000) # Minimo, incremento, Maximo if ok: self.lbl_ahorros_result.setText(str(ahorros)) def capturar_color(self): colores = [ 'Amarillo', 'Azul', 'Blanco', 'Rojo', 'Verde', 'Negro', 'Morado' ] color, ok = QInputDialog.getItem( self, 'Captura de datos.', 'Selecciona un color.', colores, 0, False ) # 0 inicia desde el color[0], False no permite editar la lista de colores if ok: self.lbl_color_result.setText(color)
class VentanaPrincipal(QMainWindow): def __init__(self): QMainWindow.__init__(self) self.initGui() def initGui(self): self.setWindowTitle('Pizza & Ingredientes.') self.setFixedSize(400, 450) self.lbl_precio_base = QLabel('Precio base Pizza: $15', self) self.lbl_precio_base.move(50, 50) self.lbl_precio_base.setFixedWidth(300) self.lbl_adicionales = QLabel('Ingredientes Adicionales.', self) self.lbl_adicionales.move(80, 100) self.lbl_adicionales.setFixedWidth(300) self.cbx_1 = QCheckBox('Queso Mozzarela. $1', self) self.cbx_1.move(80, 130) self.cbx_1.setFixedWidth(250) self.cbx_1.stateChanged.connect(self.calcular_total) self.cbx_2 = QCheckBox('Pepperoni. $2', self) self.cbx_2.move(80, 160) self.cbx_2.setFixedWidth(250) self.cbx_2.stateChanged.connect(self.calcular_total) self.cbx_3 = QCheckBox('Tocineta. $3', self) self.cbx_3.move(80, 190) self.cbx_3.setFixedWidth(250) self.cbx_3.stateChanged.connect(self.calcular_total) self.lbl_total = QLabel('Valor del pedido:', self) self.lbl_total.move(50, 250) self.lbl_total.setFixedWidth(300) self.lbl_resultado = QLabel(self) self.lbl_resultado.move(50, 280) self.lbl_resultado.setFixedSize(300, 100) def calcular_total(self): pizza = 15 adicion = 0 if self.cbx_1.isChecked(): adicion += 1 if self.cbx_2.isChecked(): adicion += 2 if self.cbx_3.isChecked(): adicion += 3 total = float(adicion + pizza) self.lbl_resultado.setText(f'Pizza: USD ${float(pizza)}\nAdicionales: USD ${float(adicion)}\n\nEl Precio Total de la Pizza es de USD ${total}')