2017-03-14 7 views
-1

저는 최근에 첫 번째 파이썬과 PyQt 프로그램을 만들었습니다. 이제는 색상이 좋아 보이게하려고합니다. 나는 문서를 둘러 보았고 QPalette documentation은 QPalette가 수동으로 각 위젯의 색상을 설정하는 대신에 갈 수있는 방법임을 제안하는 것으로 보인다. 문제는 내가 연습에서 이것을 사용하는 방법에 대한 많은 정보를 찾을 수 없다는 것과 나 같은 초보자 용 문서에 많은 데이터가 확실히 있지만 많은 예제에서 부족하다는 것입니다!초보자를위한 QPalette - 어디에서 시작할까요

여기 내 목표는 QPalette 객체 내에 내 앱의 "전역"색상을 설정하는 것입니다. 그런 다음 해당 팔레트를 내 위젯에 모두 할당해야합니다. 그럼이 문제를 해결하는 가장 좋은 방법은 무엇입니까? 예를 들어, 모든 버튼을 어두운 회색 배경으로 설정하고 싶습니다. 설명서를 보면 .setColor를 사용하여 QPalette.button() 색상을 설정해야하지만이 작업을 수행 할 수는 없습니다 (83 행 참조). 하지만 대화창 배경색을 구체적으로 설정할 수있었습니다. ,

import sys 
from PyQt4 import QtGui, QtCore 

class BatchTable(QtGui.QTableWidget): 
    def __init__(self, parent): 
     super(BatchTable, self).__init__(parent) 
     self.setAcceptDrops(True) 
     self.setColumnCount(5) 
     self.setColumnWidth(1,50) 
     self.hideColumn(1) 
     self.hideColumn(3) 
     self.hideColumn(4) 
     self.horizontalHeader().setStretchLastSection(True) 
     self.setHorizontalHeaderLabels(QtCore.QString("Status;Alpha;File;Full Path;Process ID").split(";")) 

class ffmpegBatch(QtGui.QWidget): 
    def __init__(self): 
     super(ffmpegBatch, self).__init__() 
     self.initUI() 

    def initUI(self): 
     self.pBar = QtGui.QProgressBar() 

     self.edit = QtGui.QTextEdit() 

     cmdGroup = QtGui.QGroupBox("Commandline arguments") 
     self.alphaCheck = QtGui.QCheckBox("Output alpha as separate file") 
     fpsLbl = QtGui.QLabel("FPS:") 
     self.fpsCombo = QtGui.QComboBox() 
     self.fpsCombo.addItem("29.97") 
     self.fpsCombo.addItem("23.976") 
     hbox1 = QtGui.QHBoxLayout() 
     hbox1.addWidget(self.alphaCheck) 
     hbox1.addWidget(fpsLbl) 
     hbox1.addWidget(self.fpsCombo) 
     cmdGroup.setLayout(hbox1) 

     saveGroup = QtGui.QGroupBox("Output") 
     saveLocationBox = QtGui.QHBoxLayout() 
     self.outputLocation = QtGui.QLineEdit() 
     self.popBtn = QtGui.QPushButton("Pop dir") 
     saveLocationBox.addWidget(self.outputLocation) 
     saveLocationBox.addWidget(self.popBtn) 

     saveBtnsBox = QtGui.QHBoxLayout() 
     pasteFromClipboard = QtGui.QPushButton("Paste from clipboard") 
     upOneBtn = QtGui.QPushButton("./") 
     upTwoBtn = QtGui.QPushButton("././") 
     saveBtnsBox.addWidget(pasteFromClipboard) 
     saveBtnsBox.addWidget(upOneBtn) 
     saveBtnsBox.addWidget(upTwoBtn) 

     saveMasterBox = QtGui.QVBoxLayout() 
     saveMasterBox.addLayout(saveLocationBox) 
     saveMasterBox.addLayout(saveBtnsBox) 

     saveGroup.setLayout(saveMasterBox) 

     self.runBtn = QtGui.QPushButton("Run Batch Transcode") 

     showDebugger = QtGui.QPushButton("Show debugger") 
     showDebugger.setCheckable(True) 

     self.mainBox = QtGui.QVBoxLayout() 
     self.table = BatchTable(self) 
     self.mainBox.addWidget(self.table) 
     self.mainBox.addWidget(cmdGroup) 
     self.mainBox.addWidget(saveGroup) 
     self.mainBox.addWidget(self.runBtn) 
     self.mainBox.addWidget(self.pBar) 
     self.mainBox.addWidget(showDebugger) 
     self.mainBox.addWidget(self.edit) 
     self.edit.hide() 

     self.setLayout(self.mainBox) 
     self.setGeometry(300, 300, 600, 700) 
     self.setWindowTitle('FFMPEG Batch Converter') 

     # make pretty 
     palette = QtGui.QPalette() 
     palette.setColor(self.backgroundRole(), QtGui.QColor(40, 40, 40)) 
     self.setPalette(palette) 
     palette.setColor(palette.button(), QtGui.QColor(100, 100, 100)) 
     self.runBtn.setPalette(palette) 

def main(): 
    app = QtGui.QApplication(sys.argv) 
    ex = ffmpegBatch() 
    ex.show() 
    sys.exit(app.exec_()) 

if __name__ == '__main__': 
    main() 
+0

코드를 지금까지 보여줄 수 있습니까? –

+0

예, 원래 질문에 추가하십시오. 예를 들어 "runBtn"배경을 어둡게 만들고 텍스트를 흰색으로 만들려면 어떻게해야합니까? – Spencer

답변

-1

는 신경 쓰지 계단식으로 stylesheets 같은 방법을가는 더 나은 방법 같습니다

여기 내 코드의 단지의 GUI 부분입니다. 예를 들어 응용 프로그램의 모든 버튼을 아주 아름다운 노란색으로 설정하려면 다음을 입력하십시오. QApplication.setStyleSheet("QPushButton { background: yellow }")