2014-12-11 4 views
3

글꼴 색상을 변경하는 방법을 보여주는 데모 응용 프로그램을 만들려고합니다.python QLineEdit Text Color

나는 내가 QLineEdit에 대한 전경 텍스트 색상을 변경할 수있는 방법을 발견 한 QLabel과은 QTextEdit

에 그것을 할 수 있습니다.

그것을인가 또는이 작업을 수행 할 수 없습니다 ... 텍스트 색상은 검정색으로,

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

그러나 :

오류가 발생하지 않습니다 내가 시도한 유일한 것은이다 ?

답변

9

당신은 스타일 시트로 작업을 수행 할 수 있습니다

다음
self.my_line_edit = QtGui.QLineEdit() 
self.my_line_edit.setStyleSheet("color: rgb(255, 0, 255);") 
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) 

이 조각은 보여줍니다

  • 어떻게 당신이 다루고있는 위젯의 유형을 찾기 위해;
  • QColorQColorDialog에서 스타일 시트로 사용하기위한 문자열 HEX 형식으로 변환하는 방법.
  • 위젯이 필요한 유형의 팔레트 요소를 사용하지 않을 때 QColorDialog을 사용하는 방법. led_dem은 내 양식과 textEdit 양식에 textEdit입니다 내 경우

나는 defaultHost = led_dem.textEdit을 사용하고 있습니다.

또한 pWidgetforminstance을 포함한 완전한 위젯 정의입니다.

+0

이 링크를 방문 할 수 있습니다. 그러나이 주제에 대한 귀하의 계속되는 어려움은 다양한 [색의 역할] (http://qt-project.org/doc/qt-4.8/qpalette.html#ColorRole-enum)이 무엇을하는지 이해하지 못함에 기인합니다. 특히'배경'과'전경'(둘다 쓸데없는 것들)은 그들이 생각하는대로 사용되지 않습니다 (대신에'Base'와'Text'를 사용해야합니다). – ekhumoro

+0

"이해하지 못함"목표가 맞습니다. QT가 다소 혼란스러운 '징계'라는 것을 알게되었습니다.그리고, 내가하는 수준에서 그것을 사용하는 사람은 아무도 없습니다. 내가 여기에 응답을 얻을 때까지, 나는 (대부분) 어려운 방법을 알아 냈다 때문에 나는 대답에 시간을 보냈다. – user3279899

+0

Python 2.7.x와 QT 4.8.5를 사용하여 QPushbutton에서 작동 할 'Base'와 'Text'를 얻을 수 없었습니다. – user3279899

1

나는 이것이 내가 CSS를하는 방법을

Palette= QtGui.QPalette() 
Palette.setColor(QtGui.QPalette.Text, QtCore.Qt.red) 
self.lineEdit.setPalette(Palette) 

QLineEdit을했다 사용하지 않는 그것을 어떻게 글꼴 텍스트와 배경

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

에 대한 해결 initStyleOption 및 initStyleOption는 QStyleOption을 상속하고 QStyleOption가있다 메소드 QPalette. 이제 QPalette 메소드를 사용할 수 있습니다.

당신은 내가 당신이 이미 원래의 질문에 한 줄 솔루션을받은 것이 답변에 모든 시간을 보낸 이유를 알고 싶소 참조 http://pyqt.sourceforge.net/Docs/PyQt4/qlineedit.html