What is new?

Version 0.7.3:

Json stylesheet ‘hot reload’:

Changes made to Json stylesheet files will be reloaded, no need to restart your app, just set LiveCompileQss to true

self.liveCompileQss = True

Prevent new icons generation

You can prevent the new/missing icons from being generated by

  • Using Json file, set "CheckForMissingicons" to false
    {
      "LiveCompileQss": true,
      "ShowLogs": false,
      "CheckForMissingicons": false,
      "QSettings": [
          {
    
  • From python file
    self.checkForMissingicons = True #generate new icons
    # OR
    self.checkForMissingicons = False # do not generate new icons
    

New widgets

Added new custom widgets: QDraggableWidget and QCustomModals.

Version 0.7.3:

Qss stylesheet ‘hot reload’:

All changes made to your qss\scss\defaultStyle.scss style sheet file will be recompiled and automatically applied to your app GUI, no need to restart the app when styling your GUI

  • You can apply this feature from your JSon style by adding LiveCompileQss: true,:

      "ShowLogs": true,
      "LiveCompileQss": true,
      "QMainWindow": [
          {
    
  • you can also do this from your python file:

      self.liveCompileQss = True #self = mainwindow 
    

Version 0.6.9:

  1. New project structure:

To use version 0.6.9 or later, it’s best to stick to the project structure outlined below. Alternatively, you can use the ProjectMake or project wizard tool, which will set up your project with the same structure automatically.

project_name/
│
├── README.md
├── requirements.txt
├── main.py
│
├── ui/
│   ├── main_window.ui
│   └── ...
│
├── src/
│   ├── __init__.py
│   ├── utils.py
│   ├── helper_functions.py
│   └── ui_main_window.py  # Automatically generated from main_window.ui
│
├── qss/
│   ├── scss/
│   │   ├── style.scss
│   │   └── ...
│   │
│   └── icons/
│       ├── icon1.png
│       └── ...
│
├── logs/
│   └── custom_widgets.log
│
├── json_styles/
│   ├── style.json
│   └── ...
│
└── generated-files/
    ├── new_files # Automatically generated by Custom Widgets
    └── ...


Description:

  • README.md: Description of the project.
  • requirements.txt: List of Python dependencies required for the project.
  • main.py: Entry point of the application.
  • ui/: Directory containing UI-related files.
    • main_window.ui: Main window layout file.
    • Other UI-related files.
  • src/: Source code directory.
    • __init__.py: Package initialization file.
    • utils.py: Utility functions.
    • helper_functions.py: Additional helper functions.
    • ui_main_window.py: Automatically generated Python code from main_window.ui.
  • qss/: Directory for Qt Style Sheets (QSS) and icons.
    • scss/: SCSS files for styling.
    • icons/: Icon images.
  • logs/: Directory for log files.
    • custom_widgets.log: Log file.
  • json_styles/: Directory for JSON style files.
  • style.json: Example JSON style file.
  • generated-files/: Directory for files auto-generated by the custom widgets module.
    • Example generated files include UI’s and JSon files

This structure allows for automatic conversion of UI files to Python code and placement within the src folder, simplifying the development process for users.

  1. Quick theme engine.
    • Applies new icons on theme change without need to restart your app.
    • Faster theme/icons switching.
    • The custom widgets module comes with its own icon sets:
    • Feather
    • FontAwesome
    • and Google material design icons.
  2. New custom widgets logs.
    • Log file is located inside the “Logs” folder.
  3. Quick CMD/Terminal commands:
    • To launch ProjectMaker / project wizard, run
      Custom_Widgets --create-project
      

      This will create a Qt-python project inside your empty folder, ready to run.

    • Easy to convert UI files to py. The cutom widgets Theme Engine eliminated the need for QRC to python file conversion, therefore to generate UI-Python files without any errors, use
      Custom_Widgets --convert-ui ui-path --qt-library your-lib
      
    • Monitor changes made to UI file and generate new .py file and other necessary files for the custom widgets
      Custom_Widgets --monitor-ui ui-path --qt-library your-lib
      

      Where: ui-path is the UI file path or folder containing UI files. your-lib is PySide6, PySide2, PyQt5 or PyQt6

Updating old GUI app to work with the current Custom Widgets module update

Version 0.6.2:

  • Added support for loading multiple JSON Stylesheets By default, the json file named style.json will be loaded, so no need to specify. The file must me inside the root directory of your project, json directory, or jsonstyles directory inside your project folder for it to be automatically loaded.

    If you have multiple JSON stylesheet files, then you can apply them to your GUI like this:

          ########################################################################
          # APPLY JSON STYLESHEET
          ########################################################################
          # self = QMainWindow class
          # self.ui = Ui_MainWindow / user interface class
          loadJsonStyle(self, self.ui, jsonFiles = {
              "mystyle.json",
              "mydirectory/myJsonStyle.json"
              })
          ########################################################################
    

    This feature is helpful especially when you have multiple windows files that will share only some parts of the stylesheet shuch app app title, settings etc.

  • Toggle logs: You can now switch app logs on or off. This can be done from a python file:

      # Show Logs
      self.showCustomWidgetsLogs = True
    
      # Hide Logs
      self.showCustomWidgetsLogs = False
    

    From the JSON file:

      {
      "ShowLogs": true,
    
      {
      "ShowLogs": false,
    

Version 0.6.8:

  • Added full support for pyside6