How to use non-integer, float values for Tkinter Scale widget scrollbar?

Tkinter is a popular library for creating graphical user interfaces (GUI) in Python. The Scale widget provides a scrollbar-like control for selecting values from a range. By default, it only supports integer values, but we can modify it to handle non-integer float values with proper configuration.

Basic Scale Widget with Float Values

The key to using float values is setting the resolution parameter to a decimal value ?

import tkinter as tk

def on_scale_change(value):
    print(f"Scale value: {value}")

root = tk.Tk()
root.geometry("400x200")
root.title("Float Scale Widget")

# Create scale with float resolution
scale = tk.Scale(root, from_=0, to=1, resolution=0.1, 
                orient='horizontal', command=on_scale_change)
scale.pack(pady=20)

root.mainloop()

In this example, the resolution=0.1 parameter allows the Scale widget to increment in steps of 0.1, enabling float values between 0 and 1.

Working with Larger Float Ranges

For larger ranges with decimal precision, you can scale the values appropriately ?

import tkinter as tk

def on_scale_change(value):
    float_value = float(value)
    print(f"Current value: {float_value}")

def get_precise_value():
    current_value = scale.get()
    print(f"Precise value: {current_value}")

root = tk.Tk()
root.geometry("400x250")
root.title("Precise Float Scale")

# Scale from 0 to 10 with 0.01 precision
scale = tk.Scale(root, from_=0, to=10, resolution=0.01, 
                orient='horizontal', command=on_scale_change)
scale.pack(pady=20)

# Button to get current value
button = tk.Button(root, text="Get Current Value", command=get_precise_value)
button.pack(pady=10)

# Set initial value
scale.set(5.25)

root.mainloop()

Custom Float Scale with Labels

You can create a more sophisticated scale with custom formatting and labels ?

import tkinter as tk

class FloatScale:
    def __init__(self, master):
        self.master = master
        self.current_value = tk.StringVar()
        self.current_value.set("0.00")
        
        # Create scale
        self.scale = tk.Scale(master, from_=0, to=100, resolution=0.5,
                            orient='horizontal', command=self.update_value)
        self.scale.pack(pady=10)
        
        # Display current value
        self.label = tk.Label(master, textvariable=self.current_value, 
                            font=('Arial', 14))
        self.label.pack(pady=10)
    
    def update_value(self, value):
        float_val = float(value)
        self.current_value.set(f"{float_val:.2f}")

root = tk.Tk()
root.geometry("400x200")
root.title("Custom Float Scale")

float_scale = FloatScale(root)
root.mainloop()

Comparison of Approaches

Method Precision Best For
Direct resolution Fixed decimal places Simple float ranges
Value scaling Custom precision Large ranges with decimals
Custom class Full control Complex applications

Key Parameters for Float Values

Understanding these Scale widget parameters is essential for float handling:

  • resolution: Sets the increment step (use decimal values like 0.1, 0.01)
  • from_ and to: Define the range (can be float values)
  • digits: Controls display precision for large numbers
  • get() and set(): Retrieve and set float values programmatically

Conclusion

The Tkinter Scale widget can handle float values by setting the resolution parameter to a decimal value. Use direct resolution for simple cases, value scaling for complex ranges, or custom classes for advanced control over float precision and display.

Updated on: 2026-04-02T17:26:20+05:30

1K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements