web-dev-qa-db-ja.com

python QLineEditテキストの色

フォントの色を変更する方法を示すデモアプリを作成しようとしています。

QLabelとQTextEditで実行できます

QLineEditの前景色のテキストの色を変更する方法が見つかりませんでした。

エラーをスローしない私が試した唯一のことは次のとおりです。

color = QColorDialog.getColor(defaultHost.textColor(), pWidget, 'Get Text Color')
myPalette.setColor(myPalette.WindowText, QColor(color))

しかし、テキストの色は黒のままです...

これを行うことは可能ですか、それとも不可能ですか?

8
user3279899

オブジェクトのスタイルシートを設定する

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;
    }
    """)
13
101

フォントテキストと背景を解決しました

 self.my_line_edit.setStyleSheet(
                """QLineEdit { background-color: green; color: white }""")
4
Hernan Ramirez

これは私が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

1
fLY

以下は、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)

このスニペットは次のことを示しています。

  • 扱っているウィジェットのタイプを見つける方法。
  • QColorQColorDialogから文字列HEX形式に変換してスタイルシートで使用する方法。そして
  • ウィジェットが必要なタイプのパレット要素を使用しない場合のQColorDialogの使用方法。

私の場合、defaultHost = led_dem.textEditを使用しています。ここで、led_demはフォームで、textEditはフォームのtextEditです。

また、pWidgetは、forminstanceを含む完全なウィジェット定義です。

1
user3279899