A wrapper module for various GUI usages
Project description
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_())
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
File details
Details for the file GUISpices-1.2.0-py3-none-any.whl
.
File metadata
- Download URL: GUISpices-1.2.0-py3-none-any.whl
- Upload date:
- Size: 8.8 kB
- Tags: Python 3
- Uploaded using 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
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a9d4d998ca7177da96a69e03cd54028442d005dc11d03a4bb9171583c027f216 |
|
MD5 | c467547881e94705138da38f1f1001cd |
|
BLAKE2b-256 | 0719651f548dc7276afd9785574d86df08ba7185a3e88fa6c7d236a4a9899601 |