Skip to main content

tkinter-videoplayer

A simple video player component for Tkinter, built with OpenCV and Pillow.

The current alternatives either didn't work (outdated dependencies) or used av (which requires compilation).

Features

  • Batteries included: Includes controls to play, pause, stop, and seek video files
  • Familiar UI: Toggle play/pause with a button or click or spacebar
  • Easy to install: Doesn't use av (which requires compilation on the host system)
  • Looks decent visually, and can be customized in theme.py
  • Works by rendering frames using OpenCV and Pillow

Screenshot

screenshot

Installation

pip install tkinter-videoplayer

Quick Start

from tkinter_videoplayer import VideoPlayer
import tkinter as tk

root = tk.Tk()
player = VideoPlayer(root, video_path='sample.mp4', height=360)
root.mainloop()

API

VideoPlayer(parent, video_path, **options)

  • parent: Tkinter parent widget
  • video_path: Path to the video file
  • **options: Additional options to customize the player:
    • autoplay (bool): Start playback automatically when loaded. Default: False.
    • loop (bool): Loop the video when it reaches the end. Default: False.
    • controls (bool): Show playback controls (play, pause, seek, etc.). Default: True.
    • width (int): Width of the video player in pixels. Default: video width or parent width.
    • height (int): Height of the video player in pixels. Default: video height or parent height.

You can also edit the default theme by modifying theme.py.

Methods

  • play(): Start or resume playback
  • pause(): Pause playback
  • stop(): Stop playback and reset

Properties

  • autoplay (bool): Whether playback starts automatically when loaded.
  • loop (bool): Whether playback loops when the video ends.
  • controls (bool): Whether playback controls are shown.
  • currentTime (float): Current playback time in seconds (get/set).
  • duration (float): Duration of the loaded video in seconds (read-only).

Events

  • play: Called when playback starts
  • pause: Called when playback pauses
  • ended: Called when playback ends
  • load: Called when the video loads

Usage Example

See the examples folder for more examples!

  • 01_combined_examples.py: Shows four different video player configurations in a single 2x2 grid window, each with a title, video, and code snippet.
  • 02_events.py: Demonstrates how to use event listeners for play, pause, and end events.
  • 03_external_controls.py: Shows how to control the video player externally with custom buttons.
# Example: Basic usage
from tkinter_videoplayer import VideoPlayer
import tkinter as tk

root = tk.Tk()
player = VideoPlayer(root, video_path='sample.mp4', height=360)
player.frame.pack()
root.mainloop()
# Example: Adding event listeners (see 02_events.py)
def handle_play():
    print("Video started!")
def handle_pause():
    print("Video paused.")
def handle_ended():
    print("Video ended.")

player.add_event_listener("play", handle_play)
player.add_event_listener("pause", handle_pause)
player.add_event_listener("ended", handle_ended)
# Example: External controls (see 03_external_controls.py)
btn_play = tk.Button(root, text="Play", command=player.play)
btn_pause = tk.Button(root, text="Pause", command=player.pause)
btn_stop = tk.Button(root, text="Stop", command=player.stop)
btn_play.pack()
btn_pause.pack()
btn_stop.pack()

Download files

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

Source Distribution

tkinter_videoplayer-1.3.1.tar.gz (12.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tkinter_videoplayer-1.3.1-py3-none-any.whl (13.1 kB view details)

Uploaded Python 3

File details

Details for the file tkinter_videoplayer-1.3.1.tar.gz.

File metadata

  • Download URL: tkinter_videoplayer-1.3.1.tar.gz
  • Upload date:
  • Size: 12.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for tkinter_videoplayer-1.3.1.tar.gz
Algorithm Hash digest
SHA256 5f2c53ee66c155757b81ba36b2af45b4a51993c3892ebe39a80b2ac8e4ee41b7
MD5 70208c7bdf6f283d92a094a6c6dd93b8
BLAKE2b-256 c0b116709e1fbb0172446e4e0808edefac7f55353a0261c37ce3871595022be1

See more details on using hashes here.

Provenance

The following attestation bundles were made for tkinter_videoplayer-1.3.1.tar.gz:

Publisher: ci_deploy_workflow.yml on cmdr2/tkinter-videoplayer

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tkinter_videoplayer-1.3.1-py3-none-any.whl.

File metadata

File hashes

Hashes for tkinter_videoplayer-1.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 b1936f7e6b9c197c3326007abfb18dad1ceb228b131f15f9e2f40d3eb0f469f0
MD5 2be1ccf827b65d21b71dd31896f39b64
BLAKE2b-256 bdbb9d5b4db5ad4f67fa18f6122608253c78c9c326a34f1701fab6bf4630f91f

See more details on using hashes here.

Provenance

The following attestation bundles were made for tkinter_videoplayer-1.3.1-py3-none-any.whl:

Publisher: ci_deploy_workflow.yml on cmdr2/tkinter-videoplayer

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

1.3.1 This release

2 files

1.3.0

2 files

1.2.0

2 files

1.1.0

2 files

1.0.2

2 files

1.0.1

2 files

1.0.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page