2017-03-14 8 views
-1

最近私は最初のPythonとPyQtプログラムを作っています。今は色をよくして見栄えを良くするために探しています。私はドキュメントを調べており、QPalette documentationは、各ウィジェットの色を手動で設定するのではなく、QPaletteを使用する方法を提案しているようです。問題は私が実際にこれを使用する方法についての情報をたくさん見つけ出すことができず、多くの例では私のような初心者のためのドキュメンテーションには確かに多くのデータがあります。QPalette for beginners - どこから始めるのですか

ここから私の目標は、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のように見えるが移動するための方法、より良い方法です。たとえば、アプリケーション内のすべてのボタンを完全に美しい黄色に設定するには:QApplication.setStyleSheet("QPushButton { background: yellow }")

関連する問題