python pyqt qlineedit

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 un QColorDialog 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