我正在尝试创建一个演示应用程序来展示如何更改字体颜色。
我可以在QLabel和QTextEdit
中完成我发现无法更改QLineEdit的前景文字颜色。
我尝试过的唯一没有抛出错误的是:
color = QColorDialog.getColor(defaultHost.textColor(), pWidget, 'Get Text Color')
myPalette.setColor(myPalette.WindowText, QColor(color))
但是,文字颜色仍然是黑色......
是否或不可能这样做?
答案 0 :(得分:12)
您可以setting the object's style sheet执行此操作:
self.my_line_edit = QtGui.QLineEdit()
self.my_line_edit.setStyleSheet("color: red;")
# or
self.my_line_edit.setStyleSheet("color: rgb(255, 0, 0);")
# or
self.my_line_edit.setStyleSheet("""
QLabel {
color: red;
}
""")
答案 1 :(得分:3)
我解决了字体文字和背景
self.my_line_edit.setStyleSheet(
"""QLineEdit { background-color: green; color: white }""")
答案 2 :(得分:1)
下面是一个代码片段,花了我两天的试验和错误才弄清楚。我希望它可以帮助像我这样的其他新手。我在代码中的评论也应该有所帮助。
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)
此代码段显示:
QColor
从QColorDialog
转换为字符串HEX格式以与样式表一起使用;和QColorDialog
。 在我的情况下,我使用的是defaultHost = led_dem.textEdit
,其中led_dem
是我的表单,textEdit
是表单上的textEdit
。
此外,pWidget
是完整的小部件定义,包括form
和instance
。
答案 3 :(得分:1)
这就是我不使用css的方式
Palette= QtGui.QPalette()
Palette.setColor(QtGui.QPalette.Text, QtCore.Qt.red)
self.lineEdit.setPalette(Palette)
QLineEdit有一个方法 initStyleOption ,initStyleOption继承QStyleOption,然后QStyleOption有一个方法QPalette。现在你可以采用QPalette方法了。
您可以访问此链接以参考http://pyqt.sourceforge.net/Docs/PyQt4/qlineedit.html
答案 4 :(得分:0)
对我来说这是第一次尝试:
self.LBLDefteraStatusState.setStyleSheet('color: green;')