es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Funciona cambiar las hojas de estilo de los widgets mediante propiedades en Qt6 (como lo hacía en Qt5)?

Me pregunto si hay algo que me estoy perdiendo aquí. Utilicé propiedades para modificar algunos estilos de mis widgets en Qt5, pero parece que no funciona en Qt6. Si es un error, lo reportaré en otro lugar, pero simplemente me pregunto si estoy haciendo algo mal.

Tengo un ejemplo sencillo a continuación, donde el cambio de propiedad desencadena correctamente un cambio de estilo cuando qt=5, pero no cuando qt=6. El color debería cambiar a medida que el número aumenta. ¡Cualquier ayuda es apreciada!

Funcionando en Qt5

Qt5 funciona

No funciona en Qt6

Qt6 no funciona


qt = 6

if qt == 6:
from PyQt6.QtGui import QFont
from PyQt6.QtWidgets import QApplication, QLabel, QWidget, QVBoxLayout
from PyQt6.QtCore import QTimer
elif qt == 5:
from PyQt5.QtGui import QFont
from PyQt5.QtWidgets import QApplication, QLabel, QWidget, QVBoxLayout
from PyQt5.QtCore import QTimer

import sys

class SampleWidget(QWidget):
def init(self):
super().init()

    self.timer1, self.timer2, self.timer3 = QTimer(), QTimer(), QTimer()
    self.timer1.singleShot(1000, self.fun1)
    self.timer2.singleShot(2000, self.fun2)
    self.timer3.singleShot(3000, self.close)  # noqa

    self.label = QLabel('0')
    font = QFont()
    font.setPointSize(50)
    self.label.setFont(font)
    self.layout = QVBoxLayout(self)
    self.layout.addWidget(self.label)
    self.setLayout(self.layout)

def fun1(self):
    self.label.setText('1')
    self.set_property(True)

def fun2(self):
    self.label.setText('2')
    self.set_property(False)

def set_property(self, style_red):
    self.label.setProperty('StyleRed', style_red)
    self.label.style().unpolish(self.label)
    self.label.style().polish(self.label)
    self.label.update()
    QApplication.processEvents()

app = QApplication([])
app.setStyleSheet(‘QLabel[StyleRed=true]{color:red;} QLabel[StyleRed=false]{color:green;}’)
gui = SampleWidget()
gui.show()
sys.exit(app.exec())
“`

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Es posible que el uso de propiedades para modificar los estilos del widget haya cambiado entre Qt5 y Qt6. Podría ser un error, pero también es posible que el código deba actualizarse para que funcione con Qt6.

    Una sugerencia sería revisar la documentación de PyQt6 y ver si hay algún cambio que se deba hacer en el código para que funcione con Qt6. Otra opción sería pedir ayuda y soporte a la comunidad de PyQt con este problema.

Comments are closed.