Python PyQt5 to Build a Camera Selfie Picture Webcam GUI Desktop App Full Project For Beginners

Python PyQt5 to Build a Camera Selfie Picture Webcam GUI Desktop App Full Project For Beginners


Welcome folks today in this post we will be making a selfie picture webcam desktop app in tkinter. All the full source code of the application will be given below.




Get Started




In order to get started you need to install the following library using the pip command as shown below


pip install pyqt5


After installing this make an file and copy paste the following code



# importing required libraries 
from PyQt5.QtWidgets import *
from PyQt5.QtMultimedia import *
from PyQt5.QtMultimediaWidgets import *
import os 
import sys 
import time 

# Main window class 
class MainWindow(QMainWindow): 

    # constructor 
    def __init__(self): 

        # setting geometry 
        self.setGeometry(100, 100, 
                        800, 600) 

        # setting style sheet 
        self.setStyleSheet("background : lightgrey;") 

        # getting available cameras 
        self.available_cameras = QCameraInfo.availableCameras() 

        # if no camera found 
        if not self.available_cameras: 
            # exit the code 

        # creating a status bar 
        self.status = QStatusBar() 

        # setting style sheet to the status bar 
        self.status.setStyleSheet("background : white;") 

        # adding status bar to the main window 

        # path to save 
        self.save_path = "" 

        # creating a QCameraViewfinder object 
        self.viewfinder = QCameraViewfinder() 

        # showing this viewfinder 

        # making it central widget of main window 

        # Set the default camera. 

        # creating a tool bar 
        toolbar = QToolBar("Camera Tool Bar") 

        # adding tool bar to main window 

        # creating a photo action to take photo 
        click_action = QAction("Click photo", self) 

        # adding status tip to the photo action 
        click_action.setStatusTip("This will capture picture") 

        # adding tool tip 
        click_action.setToolTip("Capture picture") 

        # adding action to it 
        # calling take_photo method 

        # adding this to the tool bar 

        # similarly creating action for changing save folder 
        change_folder_action = QAction("Change save location", 

        # adding status tip 
        change_folder_action.setStatusTip("Change folder where picture will be saved saved.") 

        # adding tool tip to it 
        change_folder_action.setToolTip("Change save location") 

        # setting calling method to the change folder action 
        # when triggered signal is emitted 

        # adding this to the tool bar 

        # creating a combo box for selecting camera 
        camera_selector = QComboBox() 

        # adding status tip to it 
        camera_selector.setStatusTip("Choose camera to take pictures") 

        # adding tool tip to it 
        camera_selector.setToolTip("Select Camera") 

        # adding items to the combo box 
                                for camera in self.available_cameras]) 

        # adding action to the combo box 
        # calling the select camera method 

        # adding this to tool bar 

        # setting tool bar stylesheet 
        toolbar.setStyleSheet("background : white;") 

        # setting window title 
        self.setWindowTitle("PyQt5 Cam") 

        # showing the main window 

    # method to select camera 
    def select_camera(self, i): 

        # getting the selected camera = QCamera(self.available_cameras[i]) 

        # setting view finder to the camera 

        # setting capture mode to the camera 

        # if any error occur show the alert self.alert( 

        # start the camera 

        # creating a QCameraImageCapture object 
        self.capture = QCameraImageCapture( 

        # showing alert if error occur 
        self.capture.error.connect(lambda error_msg, error, 
                                msg: self.alert(msg)) 

        # when image captured showing message 
        self.capture.imageCaptured.connect(lambda d, 
                                        i: self.status.showMessage("Image captured : "
                                                                    + str(self.save_seq))) 

        # getting current camera name 
        self.current_camera_name = self.available_cameras[i].description() 

        # inital save sequence 
        self.save_seq = 0

    # method to take photo 
    def click_photo(self): 

        # time stamp 
        timestamp = time.strftime("%d-%b-%Y-%H_%M_%S") 

        # capture the image and save it on the save path 
                                        "%s-%04d-%s.jpg" % ( 

        # increment the sequence 
        self.save_seq += 1

    # change folder method 
    def change_folder(self): 

        # open the dialog to select path 
        path = QFileDialog.getExistingDirectory(self, 
                                                "Picture Location", "") 

        # if path is selected 
        if path: 

            # update the path 
            self.save_path = path 

            # update the sequence 
            self.save_seq = 0

    # method for alerts 
    def alert(self, msg): 

        # error message 
        error = QErrorMessage(self) 

        # setting text to the error message 

# Driver code 
if __name__ == "__main__" : 
# create pyqt5 app 
    App = QApplication(sys.argv) 

    # create the instance of our Window 
    window = MainWindow() 

    # start the app 


See also  Python 3 Tkinter FPDF Library Script to Convert or Export Raw Text to PDF Document GUI Desktop App Full Project For Beginners


Now if you run the python script by typing the below command as shown below








Leave a Reply