Skip to main content

pyscopegui icon: an analog trace above two logic traces on one time axis

pyscopegui

CI release PyPI python platform license

Oscilloscopes and logic analysers in one view: analog and logic channels from separate instruments, on one time axis.

For a bench with more than one scope: the channels of each, side by side on one plot. pyscopegui reads the scopes live, triggers on any channel, measures between cursors, decodes CAN, UART, SPI and I²C, and keeps the last seconds or minutes of everything to go back over, export to CSV, or save and open again later. Every scope is set up the same way -- volts a division, probe, coupling.

Works with the PicoScope 2000 series (including the MSO variants), the Rigol DS1000Z series and the Tektronix TDS/TPS 2000 series, and a built-in demo that needs no hardware.

pyscopegui with a Rigol and a PicoScope open together: the same 1 kHz sine on a channel of each, drawn on one time axis around each scope's own trigger, with the Instrument pane, the channel list and the Event Log

Install and run

To install it:

pip install pyscopegui

To run it:

pyscopegui

To update it:

pip install --upgrade pyscopegui

Python 3.12 or newer, on Windows or Linux. python -m pyscopegui starts it too. On Windows there is also a standalone installer, which needs no Python.

On Linux, Qt needs a system library to draw the window, and Debian, Ubuntu, Linux Mint and the like often leave it out:

sudo apt install libxcb-cursor0

What it does

  • Channels and Plot: analog channels on one plot and digital channels in lanes under it, on the same time axis. Drag or zoom either and both move. A second voltage axis, Y2, for amps or any channel put there, and channels given names of their own.
  • Several instruments at once, and two of the same kind: Add instrument puts each in the Instrument pane with a tab of its own. Each has its own trigger, and is drawn around it; or one leads, and the others are shown at about the moment its trigger comes.
  • Triggers: a scope's own Stop, Single, Normal and Auto, and an edge either way, a window, a pulse's width, a runt, a timeout, a logic pattern, or a frame read off a decoded bus, with a holdoff, on the Nth time and after a delay. A PicoScope reading blocks and a Rigol do most in their own hardware.
  • Cursors, Measurements and Data: what every channel read at one or two cursors; levels, RMS, frequency and duty between them or over what is in view; and the samples themselves, a row for each.
  • Decoding buses: CAN, UART, SPI and I²C read off analog or logic channels, listed in the Decoded buses pane.
  • Decoded CAN to pycangui: frames read off a scope's channel are sent on by UDP multicast to pycangui -- a CAN bus tool, also on PyPI -- and any other program on python-can's UDP multicast bus.
  • Maths channels: two channels added, taken away, multiplied or divided; or one inverted, squared, scaled, differentiated, integrated or averaged.
  • Probes: 1x to 1000x, differential, or a current probe read in amps.
  • Python Console: Python inside the window, with commands to drive the scopes and read their samples, and scripts run from a file, or from the command line with pyscopegui --run script.py, which closes with the script's exit code.
  • Workspaces: one for each bench or setup, each with its own instruments, settings and panes, chosen under File > Workspace.
  • Export to CSV, all of it or between the cursors, and save and open captures: everything held kept in a file and opened again exactly as it was, beside the live instruments -- a .pyscp, which can be double-clicked; and CSV files from other tools opened the same way.
  • Deep captures stay quick: the last ten seconds of every channel are held, or up to ten minutes, and what is drawn is cut down to a lowest and a highest per column of the screen, so a spike narrower than a pixel is still drawn.
  • Panes that dock, float, detach into windows of their own and pin on top, with the arrangement remembered.
  • Light and dark themes.

The manual covers each of these, and is also under Help > Documentation in the application.

Instruments

  • Demo signals: two analog and four digital channels, with no hardware.
  • PicoScope 2000 series, both ranges of them, and the scope's signal generator. The 2202, 2203, 2204, 2204A, 2205 and 2205A: both channels, streamed continuously at up to 1 MS/s, or read in short blocks at up to 100 MS/s around the scope's own trigger. The 2206 to 2208 in their A and B forms, the four-channel 2405A to 2408B, and the MSO models: two or four channels and an MSO's sixteen logic inputs, streamed at up to 31.25 MS/s, or read in blocks of up to a million samples at the scope's full rate. Pico's library is not included: install the PicoSDK from picotech.com/downloads.
  • Rigol DS1000Z series (DS1054Z, DS1074Z, DS1104Z, and the Plus, -S and MSO models), over the network or USB: the four analog channels, a sweep at a time around the scope's own trigger, read from its screen or its whole memory, with its own trigger types; or read as it is, set up at the bench. A Rigol or Tektronix is checked against the pane's settings, which can be read from it or written to it. Over the network nothing of Rigol's needs installing; USB needs a VISA library, which Rigol's own software installs.
  • Tektronix TDS/TPS 2000 series (TDS200, TDS1000, TDS2000 and TPS2000 over a serial port; the TDS1000B, TDS2000B and TDS2000C over USB): two or four channels, a sweep at a time around the scope's own trigger, or what is on its screen read off with nothing on the scope changed: suited to taking a capture off the scope rather than watching one live.
  • pycangui signals: the signals pycangui decodes from a CAN bus with its database, sent over UDP multicast on this computer, as channels in their own units, lined up with the scopes by the time of each frame, and triggered on like any other.

More

Safety notice and licence

pyscopegui shows what instruments connected to real equipment measure. A scope's ground clip is connected to the computer's ground unless the scope or its USB connection is isolated, and clipping it to a point that is not at ground can damage the equipment, the scope and the computer. Know what you are connecting to before you connect.

pyscopegui is provided under the Apache License 2.0, without warranty of any kind.

Metadata

Release files for pyscopegui 0.3.0

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

Source distribution (sdist)

Source distribution for pyscopegui 0.3.0
File Size Uploaded Provenance Actions
pyscopegui-0.3.0.tar.gz 720.8 kB With provenance Details for pyscopegui-0.3.0.tar.gz

Built distribution (wheel)

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

Total release size: 1.3 MB

Release files / pyscopegui-0.3.0.tar.gz

Download URL pyscopegui-0.3.0.tar.gz
Size 720.8 kB
Tags Source
SHA-256 checksum
How to use checksums
030d0fe8db7d5931ad15456796a4da996fa2a00ae10b50df3d2fefc69dafe9f6
BLAKE2b-256 checksum
How to use checksums
166e38bff384b581b19c92684eb8ae899c4c0e448e319381058d95544f27f73d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 1, 2026.

Transparency log

Release files / pyscopegui-0.3.0-py3-none-any.whl

Download URL pyscopegui-0.3.0-py3-none-any.whl
Size 598.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e1177a6364fce2555926070c2d49499fc7dd857a1d1e4f5cd57dfde9b84f0130
BLAKE2b-256 checksum
How to use checksums
49724d21ee0128ddbc1ce1f33ab82214602e33e9fef449c23108a5344962c100
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 1, 2026.

Transparency log

Security for pyscopegui 0.3.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for pyscopegui-0.3.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 1, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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