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.0.3.tar.gz (11.7 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.0.3-py3-none-any.whl (13.7 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for ctktrimslider-1.0.3.tar.gz
Algorithm Hash digest
SHA256 1e8fcd6450df7df17b80e7084ce1ecad9c8c5e0d6e39f011dfcf52bf420169ea
MD5 71a97d96b74428b71910662ac2a17ea7
BLAKE2b-256 a03e5d72acc8453bc6b3ca1c2cf9a604ea0916d5c4d5124d95374d1a516ad4b9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: ctktrimslider-1.0.3-py3-none-any.whl
  • Upload date:
  • Size: 13.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.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 7d8ee57c697517d02076a92070b1e166e9ebbe4a4da31d2c8a0941a86e2e224f
MD5 1f82ead199fff4c25b42d12879fdb1f6
BLAKE2b-256 6ab56aebf9c573f98c9081edeff3b25953e1c5f0e72471424b6d8636d79378a4

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