Skip to main content

A video trim slider widget for customtkinter

Project description

CTkTrimSlider

A specialized 3 button range slider for video triming, made for customtkinter

CTkTrimSlider_example_screenshot_1

Installation

Download the source code, paste the CTkTrimSlider folder in the directory where your program is present.

Example

import tkinter
import customtkinter as ctk

from CTkTrimSlider.ctk_trimslider import CTkTrimSlider

def show_duration(value):
  duration = end_value.get() - start_value.get()
  duration_label.configure(text=str(duration))
  
def show_remaining(value):
  remaining = end_value.get() - current_value.get()
  remaining_label.configure(text=str(remaining))

root = ctk.CTk()

start_value = tkinter.DoubleVar(root, value=0)
end_value = tkinter.DoubleVar(root, value=100)
current_value = tkinter.DoubleVar(root, value=50)

trim_slider = CTkTrimSlider(root, 
                            from_=0, 
                            to=100, 
                            number_of_steps=100,
                            left_button_var=start_value, 
                            right_button_var=end_value, 
                            center_button_var=current_value,
                            left_button_command=show_duration, 
                            right_button_command=show_duration, 
                            center_button_command=show_remaining)

trim_slider.grid(row=0, column=0, columnspan=2, padx=5, pady=5, sticky="nswe")

ctk.CTkLabel(root, text="Start value:").grid(row=1,column=0, padx=5, pady=5)
start_label = ctk.CTkLabel(root, textvariable=start_value)
start_label.grid(row=1, column=1, padx=5, pady=5)

ctk.CTkLabel(root, text="End value:").grid(row=2,column=0, padx=5, pady=5)
end_label = ctk.CTkLabel(root, textvariable=end_value)
end_label.grid(row=2, column=1, padx=5, pady=5)

ctk.CTkLabel(root, text="Current value:").grid(row=3,column=0, padx=5, pady=5)
current_label = ctk.CTkLabel(root, textvariable=current_value)
current_label.grid(row=3, column=1, padx=5, pady=5)

ctk.CTkLabel(root, text="Duration:").grid(row=4,column=0, padx=5, pady=5)
duration_label = ctk.CTkLabel(root, text="0")
duration_label.grid(row=4, column=1, padx=5, pady=5)

ctk.CTkLabel(root, text="Remaining:").grid(row=5,column=0, padx=5, pady=5)
remaining_label = ctk.CTkLabel(root, text=str(end_value.get() - current_value.get()))
remaining_label.grid(row=5, column=1, padx=5, pady=5)

root.mainloop()

Arguments

Parameters Details
master root window, can be tkinter.Frame or CTkFrame
width slider width in px
height slider height in px
corner_radius corner roundness of the slider
border_width space around the slider rail in px
outer_button_length thickness of the two outer buttons in px
outer_button_corner_radius corner roundness of the two outer buttons in px
outer_button_length corner roundness of center outer buttons in px
fg_color background color, default as transparent
fg_color foreground color, tuple: (light_color, dark_color) or single color
progress_color tuple: (light_color, dark_color) or single color or "transparent", color of the slider line before the button
border_color slider border color, tuple: (light_color, dark_color) or single color or "transparent", default is "transparent"
button_color color of the slider buttons, tuple: (light_color, dark_color) or single color or ((light_color_1, dark_color_1), (light_color_2, light_color_2)) for separate button colors
button_hover_color hover color, tuple: (light_color, dark_color) or single color
from_ lower slider value
to upper slider value
number_of_steps number of steps in which the sliders can be positioned
orientation "horizontal" (standard) or "vertical"
state "normal" or "disabled" (not clickable)
hover bool, enable/disable hover effect, default is True
left_button_command callback function associated with the left button(bottom button in vertical orientation), receives left slider button value as argument
right_button_command callback function associated with the right button(upper button in vertical orientation), receives right slider button value as argument
center_button_command callback function associated with the center button, receives center slider button value as argument
left_button_var tk.IntVar or tk.DoubleVar, vlaue of the left (bottom) slider button
right_button_var tk.IntVar or tk.DoubleVar, vlaue of the right (upper) slider button
center_button_var tk.IntVar or tk.DoubleVar, vlaue of the centerslider button
button_blocking bool, set to true to keep outer (left / bottom and right / upper) buttons from moving the center button, keep false to allow outer buttons to move center button

Methods:

  • .configure(attribute=value, ...)

    All attributes can be configured and updated.

       trim_slider.configure(fg_color=..., progress_color=..., button_color=..., ...)
    
  • .set(attribute_name, input_value,)

    attribute_name can be "left_value", "right_value, or "center_value"

    Will set the left, right, or center buttons value, and position depending on the attribute name.

  • .get(attribute_name)

    attribute_name can be "left_value", "right_value, or "center_value"

    Get cthe value of the lef, right, or center button of slider.

  • .cget("attribute_name")

    Get any attribute value.

More Details

For a more extensive example using this widget and its full capabilities, please visit video_trimmer_widget

Project details


Download files

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

Source Distribution

ctktrimslider-1.2.0.tar.gz (11.3 kB view details)

Uploaded Source

Built Distribution

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

ctktrimslider-1.2.0-py3-none-any.whl (12.7 kB view details)

Uploaded Python 3

File details

Details for the file ctktrimslider-1.2.0.tar.gz.

File metadata

  • Download URL: ctktrimslider-1.2.0.tar.gz
  • Upload date:
  • Size: 11.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for ctktrimslider-1.2.0.tar.gz
Algorithm Hash digest
SHA256 d68ec7c42de9fcb1254648fa704d7636d06b51b3f985246d234b0b15f23040a6
MD5 fdfcb564b180e26e45ac9aaf50e6c90f
BLAKE2b-256 ac4c2a5d3f3b7d8598941bdc71467a45d1066e42d9427f33ffe0e6464f4f5d15

See more details on using hashes here.

File details

Details for the file ctktrimslider-1.2.0-py3-none-any.whl.

File metadata

  • Download URL: ctktrimslider-1.2.0-py3-none-any.whl
  • Upload date:
  • Size: 12.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for ctktrimslider-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b7bb597f33868d30ab8475cc1f7c088150ff46392535d4ff4a16359f345d064c
MD5 ac91b63d2b3ce9f64b435c474fc214e6
BLAKE2b-256 9ed3b19d7d74582067197374d7100c6f2118d43c4717bcb40dc5f1f17c354811

See more details on using hashes here.

Supported by

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