¿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())
“`
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.