Skip to main content

Weasel's GUI Spices

This is the one and only GUI module you really need...

Features

  • Helper functions for PyInstaller builds
  • Tray icons with custom sub-menus
  • Windows Messages
  • Qt Creator windows
  • Windows Explorer extensions
  • Borderless and draggable windows
  • Easy custom CSS Styling

Helper functions for PyInstaller

These helper functions provide excellent support for building applications with PyInstaller, fixing some major problems which usually occur at runtime. I highly suggest you to build all windowed and one-file applications with PyInstaller with these functions. This will save you A LOT of debugging time.

One-file build (-F option)

If you build a .exe with the -F option, the whole app gets bundled into a single executable with all resource files included. These are unpacked on execution. But where? Use this function to refer to resource files whenever you plan to use the -w option.

from GUISpices.Utility import resource_path

# opening a "text.txt" in the same directory
f = open(resource_path("text.txt"),"r")
print(f.read())
f.close()

Make sure you attach your resource files upon build via --add-data <src;dst> when running PyInstaller! In this case: pyinstaller -F --add-data "text.txt;text.txt" main.py

Windowed build (-w option)

If you build a .exe with the -w option, the app will execute without a terminal window. We usually want this for GUI-only applications. However, if your app needs to fetch the output of a terminal command, your app either opens up a terminal or gets stuck because it is prohibited to do so. This function will execute your terminal command and return the output as string (based on subprocess.Popen).

from GUISpices.Utility import popen

print(popen("pwd")) # Output -> "C:\Users\User\Desktop"

Code examples

Tray Icons

This example creates a classic icon in the bottom right tray.

from PySide2.QtWidgets import QApplication, QMenu
from GUISpices import TrayIcon
import sys

# create main application (if not present)
app = QApplication([])
app.setQuitOnLastWindowClosed(False)

# configure basic tray actions
tray = TrayIcon(app, "examples/icon.png", "Test Program", click_action=lambda :print("Clicked"))
tray.add_menu_feature("Change Icon", lambda: tray.set_icon("examples/icon2.png"))
tray.add_menu_feature("Show a message from tray", lambda: tray.show_tray_message("Hello", "Hello my friend"))
tray.add_separator()
tray.add_menu_feature("Exit", app.exit)

# Include a custom sub-menu
menu_ = QMenu(title="Sub Menu")
menu_.addAction("Egg sit (sub-action)", lambda: sys.exit(0))
tray.add_menu(menu_)

sys.exit(app.exec_())

Windows Messages

This shows a tray icon and creates a windows tray message with a custom icon and action.

from PySide2.QtWidgets import QApplication, QMenu
from GUISpices import TrayIcon
import sys

# create main application (if not present)
app = QApplication([])
app.setQuitOnLastWindowClosed(False)

# configure basic tray
tray = TrayIcon(app, "examples/icon.png", "Test Program")

# Show message
tray.show_tray_message("Title","This is the message body",
                        icon="examples/icon.png",
                        on_click=lambda:print("Message clicked"))

sys.exit(app.exec_())

Qt Windows

The whole module lets you build all windows and popups with Qt Designer, a powerful and easy-to-use environment for drag & drop GUI building. This creates a .ui file which can be directly loaded to create the desired window with full compatibility.

from PySide2.QtWidgets import QApplication
from GUISpices import UIWindow
import sys

app = QApplication()
main_form = UIWindow('examples/wizard.ui', "examples/icon.png")
main_form.window.show()
sys.exit(app.exec_())

Windows Explorer extensions

This creates a new entry in the explorers context menu. So a right-click in any folder or on the user's desktop will show your custom action, as well. This example creates a custom action "Run CMD", which opens up a terminal.

from GUISpices import ExplorerContextManager
ExplorerContextManager.register_entry("Run CMD", "C:\\Windows\\System32\\cmd.exe", "C:\\Windows\\System32\\cmd.exe")

Borderless and draggable windows

This creates a new entry in the explorers context menu. So a right-click in any folder or on the user's desktop will show your custom action, as well. This example creates a custom action "Run CMD", which opens up a terminal.

from PySide2.QtWidgets import QApplication
from PySide2.QtCore import Qt
import sys
from GUISpices import UIWindow, DragBar

app = QApplication()
main_form = UIWindow('examples/wizard.ui', "examples/icon.png")

# This line makes your window borderless
main_form.window.setWindowFlags(Qt.FramelessWindowHint)

# This adds a special Class to it, making it movable (via drag)
DragBar(main_form.window)

main_form.window.show()
sys.exit(app.exec_())

Release files for GUISpices 1.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for GUISpices 1.2.0
File Interpreter ABI Platform
GUISpices-1.2.0-py3-none-any.whl Python 3 none any Details

Release files / GUISpices-1.2.0-py3-none-any.whl

Download URL GUISpices-1.2.0-py3-none-any.whl
Size 8.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a9d4d998ca7177da96a69e03cd54028442d005dc11d03a4bb9171583c027f216
BLAKE2b-256 checksum
How to use checksums
0719651f548dc7276afd9785574d86df08ba7185a3e88fa6c7d236a4a9899601
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.7.1

Release history Release notifications | RSS feed

This release

1.2.0 This release

1 release file

1.1.0

1 release file

1.0.3

1 release file

1.0.2

1 release file

1.0.1

1 release file

1.0.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page