Skip to main content

Qtica is a Python library that provides a lightweight API around native PySide6, allowing for lightning-fast GUI prototyping using modern declarative UI techniques entirely within Python.

Project description

Qtica

A Fast Way to Done Your Idea!

Qtica is a Python library that provides a lightweight API around native PySide6, allowing for lightning-fast GUI prototyping using modern declarative UI techniques entirely within Python.

Documention

Learn More About

Qtica Get Start

#!/usr/bin/python3

import os
import sys
from PySide6.QtCore import QSize
from Qtica import BehaviorDeclarative, Api
from Qtica.tools import Alignment, Color
from Qtica.utils.color import get_random_color, get_hex_from_color
from Qtica.widgets import (
  MainWindow,
  Container,
  Label,
  Application
)


class Window(BehaviorDeclarative):
  def update_background(self):
    bg_color = get_hex_from_color(*get_random_color())
    fg_color = get_hex_from_color(*get_random_color())
    Api.fetch("window").qss.update({"background-color": bg_color})
    Api.fetch("label").qss.update({"color": fg_color})

  def __init__(self):
    return MainWindow(
      uid="window",
      windowTitle="Qtica Get Start",
      resize = QSize(400, 200),
      events = [("mousePressEvent", lambda event: self.update_background())],
      qss={"background-color": get_hex_from_color(*get_random_color())},
      home=Alignment(
          child=Label(
            uid="label",
            text=f"Hello {os.environ.get('USER', '')}, Welcome to Qtica!",
            qss={"font-size": "24px"}
          )
        )
      )

app = Application(sys.argv)
window = Window()
window.show()
sys.exit(app.exec())

Changelog

Unreleased - (Soon!)

Added

  • parent_child_widgets.py example

0.1.1 - (2023-11-05)

Added

  • PySide6 Built-in Widgets

    • QApplication
    • QPushButton
    • QLabel
    • QFrame
    • QMainWindow
    • QSystemTrayIcon
    • QGraphicsView
    • QWidget
    • QQuickWidget
    • QQuickView
    • QGraphicsOpacityEffect
    • QGraphicsDropShadowEffect
    • QGraphicsColorizeEffect
    • QGraphicsBlurEffect
    • QFormLayout
    • QGridLayout
    • QHBoxLayout
    • QStackedLayout
    • QVBoxLayout
  • PySide6 Additional Widgets

    • WigglyWidget
    • WaterRippleProgressBar
    • WaterProgressBar
    • ProgressIndicator
    • MovieView
    • MetroCircleProgress
    • ElidingLabel
    • FramelessWindow
    • RoutingWindow
    • TeachingTip
    • SlidingStackedWidget
    • SideBarWidget
    • TerminalWidget
    • NavBarWidget
    • SilentTextDialog
    • LargTextDialog
    • ColourfulProgressBar
    • OutsideNeumorphismEffect
    • InsideNeumorphismEffect
    • FlowLayout
    • ExpandLayout
  • PySide6 Built-in Core

    • QPropertyAnimation
  • PySide6 Additional Core

    • StyleAnimation
    • ProgressStyleAnimation
    • Animation

0.1.2 - (2023-11-07)

Added

  • Qtica logo.png
  • version_generator.py example
  • status_edge.py example
  • resources, and fonts into the Application class.
  • tools.Painter class
  • tools.PaintStatusEdge
  • widgets.FramelessWindowSizeGrip

Changed

  • enums.Sizes.size_hint -> enums.Sizes.hint

Fixed

  • core.BehaviorDeclarative, no uid in __init__ parameters

0.1.3 - (2023-11-12)

Added

  • widgets.ThemeSwitchButton
  • enums.AbstractIcons to make enum icons that work with Qtica tools
  • tools.Icon
  • utils.color.DetectImageColors, using to get an image colors map.
  • utils.color.get_image_average_color, get an image rgb color
  • widgets.LineEdit
  • core.WidgetBase effect argument.
  • core.AbstractBase **kwargs, can now accept set value for method.
  • widgets.ScrollArea
  • get_start.py example

Changed

  • Theme.system_theme to static method type.
  • effects.* from ObjectDeclarative class type to ObjectBase
  • utils.color.get_hex_from_color color arg to *rgb arg

Fixed

  • pixmap error when you try to add QIcon to tools.Icon with color value.

0.1.4 (2023-11-24)

Added

  • extras icons modules elusive feather fluent fontawesome material
  • widgets.FramelessWindowSizeGrip edge option.
  • utils.methods.qt_corner_to_edge convert Qt.Corner inputs to Qt.Edge values.
  • widgets.StackedWidget QStackedWidget built-in PySide6 class
  • widgets.IconWidget
  • widgets.MaskDialog

Fixed

  • widgets.FramelessWindow window geometry changed when move window.
  • widgets.FramelessWindowSizeGrip cursor shape for SizeGrip hover.
  • tools.Icon list index out of range, when used colored icon

Updated

  • widgets.NavBarButton it's now subclass from core.WidgetBase

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

qtica-0.1.4.tar.gz (323.8 kB view hashes)

Uploaded Source

Built Distribution

qtica-0.1.4-py3-none-any.whl (158.3 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page