w3resource

Python PyQt program - Color picker

Python PyQt Widgets: Exercise-4 with Solution

Write a Python program to create a combobox with a list of colors using PyQt. When the user selects a color from the dropdown, change the main window background color.

From doc.qt.io:

QApplication Class: The QApplication class manages the GUI application's control flow and main settings.

QMainWindow Class: The QMainWindow class provides a main application window.

QComboBox Class: The QComboBox widget is a combined button and popup list.

QVBoxLayout Class: The QVBoxLayout class lines up widgets vertically.

QWidget: The QWidget class is the base class of all user interface objects.

QColor Class: The QColor class provides colors based on RGB, HSV or CMYK values.

Sample Solution:

Python Code:

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QTextEdit, QAction, QFileDialog, QVBoxLayout, QWidget

class TextEditorApp(QMainWindow):
    def __init__(self):
        super().__init__()

        # Set the window properties (title and initial size)
        self.setWindowTitle("Text Editor")
        self.setGeometry(100, 100, 600, 400)  # (x, y, width, height)

        # Create a central widget for the main window
        central_widget = QWidget()
        self.setCentralWidget(central_widget)

        # Create a QTextEdit widget for text input
        self.text_edit = QTextEdit()
        self.text_edit.setFontPointSize(14)  # Set font size

        # Create actions for Open and Save
        open_action = QAction("Open", self)
        save_action = QAction("Save", self)

        # Connect actions to methods
        open_action.triggered.connect(self.open_file)
        save_action.triggered.connect(self.save_file)

        # Create a menu bar with File menu
        menu_bar = self.menuBar()
        file_menu = menu_bar.addMenu("File")
        file_menu.addAction(open_action)
        file_menu.addAction(save_action)

        # Create a layout for the central widget and add the QTextEdit
        layout = QVBoxLayout()
        layout.addWidget(self.text_edit)

        # Set the layout for the central widget
        central_widget.setLayout(layout)

    def open_file(self):
        options = QFileDialog.Options()
        options |= QFileDialog.ReadOnly  # Open file in read-only mode
        file_path, _ = QFileDialog.getOpenFileName(self, "Open File", "", "Text Files (*.txt);;All Files (*)", options=options)
        
        if file_path:
            with open(file_path, 'r') as file:
                self.text_edit.setPlainText(file.read())

    def save_file(self):
        options = QFileDialog.Options()
        options |= QFileDialog.ReadOnly  # Open file in read-only mode
        file_path, _ = QFileDialog.getSaveFileName(self, "Save File", "", "Text Files (*.txt);;All Files (*)", options=options)
        
        if file_path:
            with open(file_path, 'w') as file:
                file.write(self.text_edit.toPlainText())

def main():
    app = QApplication(sys.argv)
    window = TextEditorApp()
    window.show()
    sys.exit(app.exec_())

if __name__ == "__main__":
    main()

Explanation:

In the exercise above -

  • Import the necessary modules.
  • Create a 'QMainWindow' named ColorPickerApp with a central widget.
  • Set the window's title and initial size.
  • Make a 'QComboBox' widget ('color_combo') and populate it with the names of the colors.
  • The "currentIndexChanged" signal of the combo box should be connected to the "change_color()" method, which will be called by the user when the color is selected.
  • Based on the selected color from the combo box, "change_color()" sets the background color of the central widget.
  • In the main() function, we create the PyQt application, create an instance of the "ColorPickerApp" class, show the window, and run the application's event loop.

Output:

PyQt: Python PyQt program  - Color picker. Part-1
PyQt: Python PyQt program  - Color picker. Part-2
PyQt: Python PyQt program  - Color picker. Part-3

Flowchart:

Flowchart: Python PyQt program  - Color picker.
Flowchart: Python PyQt program  - Color picker.

Python Code Editor:


Previous: Simple text editor.
Next: Button color changer.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Follow us on Facebook and Twitter for latest update.