Python Forum

Full Version: .get() not retrieving value?
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Hi Everyone,

I have setup a combo box to store gradient values as such:
    gradient_value = ["0%","10%","15%","20%"]
    gradient_dropdown = ttk.Combobox(column_frame, values=gradient_value, state="readonly")
    gradient_dropdown.pack(pady=5)
I am trying to retrieve that selected value when I select it in my gui using the drop down box using:
stored_value = None
def store_selected_value(event=None):
    grad_sel = gradient_dropdown.get()
    global stored_value
    stored_value= grad_sel
    print(f"Gradient: '{stored_value}'")
I have binded as such:
    gradient_dropdown.bind("<<ComboboxSelected>>", store_selected_value)
which is tacked on the end of my combo creating code:
    gradient_value = ["0%","10%","15%","20%"]
    gradient_dropdown = ttk.Combobox(column_frame, values=gradient_value, state="readonly")
    gradient_dropdown.pack(pady=5)
    gradient_dropdown.bind("<<ComboboxSelected>>", store_selected_value)
however when i select different options in my gui for gradient, it prints empty ''
can someone please help me how to store the value so i can reference as I am trying in the stored_value variable?
Here is an example using a callback function

import tkinter as tk
from tkinter import ttk

# Function to print value. Using combo.get() to get the value
def callback(event):
    label['text'] = f'Selected: {combo.get()}'

root = tk.Tk()
root.geometry('400x200+300+300')

# Label to display text
label = tk.Label(root, anchor='w')
label.pack(fill='x',padx=10)

# Some values to populate the combobox
values = [(f'Value {i}') for i in range(11)]

# Define the combobox
combo = ttk.Combobox(root, state='readonly')
combo['values'] = values
combo.current(0)
combo.pack(pady=5)

# Bind the combobox and set the function callback
combo.bind('<<ComboboxSelected>>', callback)

# Print starting value for label
label['text'] = callback(event=None)

root.mainloop()
Doing my best to reconstruct your code I came up with this:
import tkinter as tk
import tkinter.ttk as ttk


def store_selected_value(event=None):
    grad_sel = gradient_dropdown.get()
    global stored_value
    stored_value= grad_sel
    print(f"Gradient: '{stored_value}'")


root = tk.Tk()
stored_value = None
column_frame = tk.Frame(root)
column_frame.pack(padx=50, pady=50)

gradient_value = ["0%","10%","15%","20%"]
gradient_dropdown = ttk.Combobox(column_frame, values=gradient_value, state="readonly")
gradient_dropdown.pack(pady=5)
gradient_dropdown.bind("<<ComboboxSelected>>", store_selected_value)

root.mainloop()
As I select the gradient values one at a time it prints:
Output:
Gradient: '0%' Gradient: '10%' Gradient: '15%' Gradient: '20%'
The problem must be somewhere else in your code.