qlineedit documentation python
Color de texto de python QLineEdit (4)
Intento crear una aplicación de demostración para mostrar cómo cambiar los colores de las fuentes.
Puedo hacerlo en QLabel y QTextEdit
No he encontrado forma de cambiar el color de texto de primer plano para un QLineEdit.
Lo único que he probado que no arroja un error es:
color = QColorDialog.getColor(defaultHost.textColor(), pWidget, ''Get Text Color'')
myPalette.setColor(myPalette.WindowText, QColor(color))
Pero, el color del texto sigue siendo negro ...
¿Es o no es posible hacer esto?
Lo solucioné para texto de fuente y fondo
self.my_line_edit.setStyleSheet(
"""QLineEdit { background-color: green; color: white }""")
Puedes hacerlo con una hoja de estilos:
self.my_line_edit = QtGui.QLineEdit()
self.my_line_edit.setStyleSheet("color: rgb(255, 0, 255);")
A continuación se muestra un fragmento de código que me llevó dos días de prueba y error para averiguarlo. Espero que ayude a otros novatos como yo. Mis comentarios en el código también deberían ayudar.
def set_palette(pWidget, pItem):
# Get the pallet
myPalette = pWidget.palette()
defaultHost = led_dem.textEdit
if isinstance(pWidget, QPushButton):
# NOTE: Using stylesheets will temporarily change the color dialog popups push buttons
print "Instance Is: %s " %(pWidget.objectName())
# Existing colors.
bgColor = pWidget.palette().color(QPalette.Background)
fgColor = pWidget.palette().color(QPalette.Foreground)
# Convert the QColors to a string hex for use in the Stylesheet.
bg = bgColor.name()
fg = fgColor.name()
if pItem == ''Text'':
# Use the color dialog with a dummy widget to obtain a new QColor for the parameter we are changing.
color = QColorDialog.getColor(defaultHost.textColor(), pWidget, ''Get Text Color'')
# Convert it to a string HEX
fg = color.name()
# Update all parameters of interest
pWidget.setStyleSheet(''background-color: '' + bg + '';color: '' + fg)
if pItem == ''Background'':
color = QColorDialog.getColor(defaultHost.textColor(), pWidget, ''Get Background Color'')
myPalette.setColor(myPalette.Base, QColor(color))
bg = color.name()
pWidget.setStyleSheet(''background-color: '' + bg + '';color: '' + fg)
Este fragmento muestra:
- cómo encontrar qué tipo de widget está tratando;
- cómo encubrir un
QColor
desde unQColorDialog
en un formato HEX de cadena para usar con una hoja de estilo; y - cómo usar
QColorDialog
cuando el widget no utiliza un elemento de paleta del tipo que necesita.
En mi caso, estoy usando defaultHost = led_dem.textEdit
donde led_dem
es mi formulario y textEdit
es un textEdit
en el formulario.
Además, pWidget
es la definición completa del widget que incluye form
e instance
.
así es como lo hago no usando CSS
Palette= QtGui.QPalette()
Palette.setColor(QtGui.QPalette.Text, QtCore.Qt.red)
self.lineEdit.setPalette(Palette)
QLineEdit tiene un método initStyleOption e initStyleOption hereda QStyleOption, y luego QStyleOption tiene un método QPalette. Ahora puede aprovechar el uso de métodos QPalette.
puede visitar este enlace como referencia http://pyqt.sourceforge.net/Docs/PyQt4/qlineedit.html