Skip to content

Instantly share code, notes, and snippets.

@minimalefforttech
minimalefforttech / qt_styled_delegate.py
Created April 6, 2025 21:10
Styled Qt Delegate with complex data
from PySide6 import QtWidgets, QtCore, QtGui
reference_date = QtCore.QDate(2025, 4, 7)
SAMPLE_TICKET_DATA = [
{
"id": "PIPE-101",
"summary": "Fix pipeline issue",
"assignee": "Alice Tinker",
"comments": 2,
@minimalefforttech
minimalefforttech / constants.py
Last active April 8, 2025 09:16
An example QTreeView that is styled to look like a form.
from PySide6 import QtCore
from types import SimpleNamespace
from dataclasses import dataclass
from typing import Dict, List, Optional, Union
WidgetType = SimpleNamespace(
TEXT_INPUT="text_input",
DROPDOWN="dropdown",
SPINBOX="spinbox",
CHECKBOX="checkbox",
@minimalefforttech
minimalefforttech / minimap.py
Created March 7, 2025 23:32
Maya Graph Editor Minimap
# Copyright CC-BY 4.0 Alex Telford, minimaleffort.tech
""" This is the code used to create the minimap in the graph editor,
It was just a quick test so this code is a bit shit, but it works.
If you want to take this further and make it a proper tool go for it,
I appreciate attribution or a linkback but don't care that much.
"""
from PySide2 import QtWidgets, QtGui, QtCore
from maya import OpenMaya, OpenMayaAnim
from maya import cmds
@minimalefforttech
minimalefforttech / fake_alembic_writer.py
Last active March 31, 2025 08:29
This is an example showing how we can use psutil to see what files a subprocess is currently writing to. This is used when we aren't getting status updates to show the user such as during an alembic export.
import os
import sys
import time
import random
from pathlib import Path
import threading
from typing import List, IO, Optional
# Global registry of open file handles
open_file_handles: List[IO[bytes]] = []
@minimalefforttech
minimalefforttech / backend.py
Last active March 19, 2025 20:27
Example UI using local LLM
# CC-0 license, I put very little effort into setting this up so it may behave sporadically at times.
# To run this you need to install the following:
# pip install requests PySide6 difflib psutil
# You also need to install ollama from https://ollama.ai/
# Then pull the following models:
# ollama pull gemma3:1b
# see more models at https://ollama.ai/models
@minimalefforttech
minimalefforttech / async_cat_ui.py
Created December 9, 2024 04:18
An example UI to demonstrate delegates, remote networks and data mapping
"""
This example demonstrates aims to deomonstrate three simple concepts:
1. How we can retrieve data from a remote network asyncronously
1a. How we can load and display images from a remote network asynchronously
2. How to display remote images inside a model view
3. How to use data model mapping to edit a model
I have not added any "prettty visuals" or error checking.
This is purely to get you started with the concepts, it is on you to take this further depending on your own requirements.
@minimalefforttech
minimalefforttech / qt_filter_example.py
Created December 5, 2024 09:46
Short example showing smarter filtering in Qt
from difflib import SequenceMatcher
try:
from PySide6 import QtCore, QtGui, QtWidgets
except ImportError:
from PySide2 import QtCore, QtGui, QtWidgets
class FilterModel(QtCore.QSortFilterProxyModel):
""" A simple filter model based on sequencematcher quick_ratio.
@minimalefforttech
minimalefforttech / pause_maya_pipeline.py
Created November 18, 2024 09:05
using Qt to pause a running pipeline for visual debugging
from PySide2 import QtWidgets, QtCore # or PySide6 for Maya 2025+
import maya.cmds as mc
import maya.mel as mm
def my_super_long_function():
print("Running a long function here")
# Do some initial prep
cube, _ = mc.polyCube()
sphere, _ = mc.polySphere()
cone, _ = mc.polyCone()
@minimalefforttech
minimalefforttech / async_callable.py
Last active November 23, 2024 07:09
A simple example of running code on separate threads
# Copyright (C) 2024 Alex Telford
# http://minimaleffort.tech
# This work is licensed under the Creative Commons Attribution 4.0 International License.
# To view a copy of this license, visit http://creativecommons.org/licenses/by/4.0/ or send a letter to Creative Commons,
# PO Box 1866, Mountain View, CA 94042, USA.
# Distributed without any warranty or liability, use at your own risk
# This is an example of deffering code using Qt event loops
try:
from PySide6 import QtCore, QtWidgets
@minimalefforttech
minimalefforttech / qt_inspect_under_cursor.py
Created January 18, 2024 10:19
A simple example of using the Qt metaobject data to find more info out about a Qt component
# Copyright (C) 2024 Alex Telford
# http://minimaleffort.tech
# This work is licensed under the Creative Commons Attribution 4.0 International License.
# To view a copy of this license, visit http://creativecommons.org/licenses/by/4.0/ or send a letter to Creative Commons,
# PO Box 1866, Mountain View, CA 94042, USA.
# Distributed without any warranty or liability, use at your own risk
# This script allows you to click a widget to get information about it's internals in Qt.
# There is so much more you can do with the metaobject system in Qt, but hopefully this gets you started