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.

¿Cómo puedo hacer que el color de fondo y el color de primer plano de un QLabel sean diferentes? (PyQt5)

Así que he estado tratando de buscar una manera de crear una ventana completamente negra y con texto rojo oscuro en ella. Así que intenté hacer esto a continuación.

from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import Qt
import sys
app = QApplication(sys.argv)
window = QMainWindow()
window.setFixedSize(800, 200)
window.setWindowFlag(Qt.FramelessWindowHint)
texto_rojo_oscuro = QLabel(parent=window, text="Texto rojo oscuro.")
texto_rojo_oscuro.setFont(QFont("Times New Roman", 40))
texto_rojo_oscuro.setStyleSheet("color: red;")
texto_rojo_oscuro.adjustSize()
texto_rojo_oscuro.move(260, 65) 
window.show()
app.exec_()

Esto me da una ventana con fondo blanco y texto rojo en ella. Pero quería un fondo negro, así que intenté agregar estas líneas:

fondo_negro = QLabel(parent=window)
fondo_negro.setStyleSheet("background-color: black;")
window.setCentralWidget(fondo_negro)

El resultado fue solo una ventana negra sin nada en ella. ¿Cómo puedo resolver este problema para obtener la ventana que quiero?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para obtener la salida deseada, puedes establecer el color de fondo del QLabel que contiene el texto en negro en lugar de crear un nuevo QLabel para el fondo. A continuación se muestra el código modificado:

    from PyQt5.QtGui import *
    from PyQt5.QtWidgets import *
    from PyQt5.QtCore import Qt
    import sys
    
    app = QApplication(sys.argv)
    window = QMainWindow()
    window.setFixedSize(800, 200)
    window.setWindowFlag(Qt.FramelessWindowHint)
    
    dark_red_text = QLabel(parent=window, text="Texto rojo oscuro.")
    dark_red_text.setFont(QFont("Times New Roman", 40))
    dark_red_text.setStyleSheet("color: red; background-color: black;")
    dark_red_text.setAlignment(Qt.AlignCenter)
    
    window.show()
    app.exec()
    

    En el QLabel dark_red_text, agregamos background-color: black; para cambiar el color de fondo a negro. También agregamos dark_red_text.setAlignment(Qt.AlignCenter) para centrar el texto en la ventana.

Comments are closed.