フォントの色を変更する方法を示すデモアプリを作成しようとしています。
QLabelとQTextEditで実行できます
QLineEditの前景色のテキストの色を変更する方法が見つかりませんでした。
エラーをスローしない私が試した唯一のことは次のとおりです。
color = QColorDialog.getColor(defaultHost.textColor(), pWidget, 'Get Text Color')
myPalette.setColor(myPalette.WindowText, QColor(color))
しかし、テキストの色は黒のままです...
これを行うことは可能ですか、それとも不可能ですか?
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;
}
""")
フォントテキストと背景を解決しました
self.my_line_edit.setStyleSheet(
"""QLineEdit { background-color: green; color: white }""")
これは私が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
以下は、2日間の試行錯誤で理解するのにかかったコードスニペットです。それが私のような他の初心者に役立つことを願っています。コード内の私のコメントも役立つはずです。
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
を含む完全なウィジェット定義です。