In this tutorial for PyQT, we're going to cover the color picker widget.
First, we'll add another item to the toolbar:
fontColor = QtGui.QAction('Font bg Color', self) fontColor.triggered.connect(self.color_picker) self.toolBar.addAction(fontColor)
Now we still need a color picker method:
def color_picker(self): color = QtGui.QColorDialog.getColor() self.styleChoice.setStyleSheet("QWidget { background-color: %s}" % color.name())
The code above find the color that was chosen from the picker-widget, and then we modify the styleSheet for the application.
We also showed how to sneak a calendar into our application in the video, here's that code:
cal = QtGui.QCalendarWidget(self) cal.move(500,200) cal.resize(200,200)
The full code:
import sys from PyQt4 import QtGui, QtCore class Window(QtGui.QMainWindow): def __init__(self): super(Window, self).__init__() self.setGeometry(50, 50, 500, 300) self.setWindowTitle("PyQT tuts!") self.setWindowIcon(QtGui.QIcon('pythonlogo.png')) extractAction = QtGui.QAction("&GET TO THE CHOPPAH!!!", self) extractAction.setShortcut("Ctrl+Q") extractAction.setStatusTip('Leave The App') extractAction.triggered.connect(self.close_application) self.statusBar() mainMenu = self.menuBar() fileMenu = mainMenu.addMenu('&File') fileMenu.addAction(extractAction) self.home() def home(self): btn = QtGui.QPushButton("Quit", self) btn.clicked.connect(self.close_application) btn.resize(btn.minimumSizeHint()) btn.move(0,100) extractAction = QtGui.QAction(QtGui.QIcon('todachoppa.png'), 'Flee the Scene', self) extractAction.triggered.connect(self.close_application) self.toolBar = self.addToolBar("Extraction") self.toolBar.addAction(extractAction) fontChoice = QtGui.QAction('Font', self) fontChoice.triggered.connect(self.font_choice) #self.toolBar = self.addToolBar("Font") self.toolBar.addAction(fontChoice) fontColor = QtGui.QAction('Font bg Color', self) fontColor.triggered.connect(self.color_picker) self.toolBar.addAction(fontColor) checkBox = QtGui.QCheckBox('Enlarge Window', self) checkBox.move(300, 25) checkBox.stateChanged.connect(self.enlarge_window) self.progress = QtGui.QProgressBar(self) self.progress.setGeometry(200, 80, 250, 20) self.btn = QtGui.QPushButton("Download",self) self.btn.move(200,120) self.btn.clicked.connect(self.download) #print(self.style().objectName()) self.styleChoice = QtGui.QLabel("Windows Vista", self) comboBox = QtGui.QComboBox(self) comboBox.addItem("motif") comboBox.addItem("Windows") comboBox.addItem("cde") comboBox.addItem("Plastique") comboBox.addItem("Cleanlooks") comboBox.addItem("windowsvista") comboBox.move(50, 250) self.styleChoice.move(50,150) comboBox.activated[str].connect(self.style_choice) cal = QtGui.QCalendarWidget(self) cal.move(500,200) cal.resize(200,200) self.show() def color_picker(self): color = QtGui.QColorDialog.getColor() self.styleChoice.setStyleSheet("QWidget { background-color: %s}" % color.name()) def font_choice(self): font, valid = QtGui.QFontDialog.getFont() if valid: self.styleChoice.setFont(font) def style_choice(self, text): self.styleChoice.setText(text) QtGui.QApplication.setStyle(QtGui.QStyleFactory.create(text)) def download(self): self.completed = 0 while self.completed < 100: self.completed += 0.0001 self.progress.setValue(self.completed) def enlarge_window(self, state): if state == QtCore.Qt.Checked: self.setGeometry(50,50, 1000, 600) else: self.setGeometry(50, 50, 500, 300) def close_application(self): choice = QtGui.QMessageBox.question(self, 'Extract!', "Get into the chopper?", QtGui.QMessageBox.Yes | QtGui.QMessageBox.No) if choice == QtGui.QMessageBox.Yes: print("Extracting Naaaaaaoooww!!!!") sys.exit() else: pass def run(): app = QtGui.QApplication(sys.argv) GUI = Window() sys.exit(app.exec_()) run()
The result: