Reputation: 25
I am creating a simple temperature converter in python using tkinter. I have created a drop down menu with the options and a convert button. What I want to do is when the dropdown menu's changes I want the button to do a different thing. How can I achieve this ?
(example in this case: if celcius to fahrenheit is chosen button should convert cel to fahrenheit if fahr to celsius is chosen it should convert that way. )
Here is the code:
from tkinter import *
def converter():
# Create functions for conversion
def cel_fahr():
res = int(entry.get()) * 9/5 +32
print (res)
def fahr_cel():
res = (int(entry.get()) - 32) * 5/9
print (res)
#Options list for the dropdown
list_opt = ['Celsius to Fahrenheit', 'Fahrenheit to Celsius']
# Create the main window
root = Tk()
# Rename the title of the window
root.title("Temperature Converter")
# Set the size of the window
root.geometry("250x250")
# Set resizable FALSE
root.resizable(0,0)
# Create a variable for the default dropdown option
var1 = StringVar()
# Set the default drop down option
var1.set(list_opt[0])
# Create the dropdown menu
dropdown = OptionMenu(root, var1, *list_opt)
dropdown.configure(state="active")
# Place the dropdown menu
dropdown.place(x=45, y=10)
# Create an entry
entry = Entry(root)
entry.place (x=47, y=60)
#Create a button
button = Button(root, text='Convert', command=cel_fahr)
button.place(x=85,y=90)
#I TRIED THIS BUT NO
#if var1 == list_opt[0]:
#button = Button(root, text='Convert', command=cel_fahr)
#button.place(x=85,y=90)
#if var1 == list_opt[1]:
#button = Button(root, text='Convert', command=fahr_cel)
#button.place(x=85,y=90)
root.mainloop()
converter()
Upvotes: 1
Views: 2205
Reputation: 635
Switched up your code a little bit:
from tkinter import *
def converter():
# Create functions for conversion
def cel_fahr():
res = int(entry.get()) * 9/5 +32
print (res)
def fahr_cel():
res = (int(entry.get()) - 32) * 5/9
print (res)
def convert():
if selected.get() == 'Celsius to Fahrenheit':
cel_fahr()
else:
fahr_cel()
#Options list for the dropdown
list_opt = ['Celsius to Fahrenheit', 'Fahrenheit to Celsius']
# Create the main window
root = Tk()
# Rename the title of the window
root.title("Temperature Converter")
# Set the size of the window
root.geometry("250x250")
# Set resizable FALSE
root.resizable(0,0)
# Create a variable for the default dropdown option
selected = StringVar(root)
# Set the default drop down option
selected.set('Celsius to Fahrenheit')
# Create the dropdown menu
dropdown = OptionMenu(root, selected, 'Celsius to Fahrenheit', 'Fahrenheit to Celsius')
# Place the dropdown menu
dropdown.place(x=45, y=10)
# Create an entry
entry = Entry(root)
entry.place (x=47, y=60)
#Create a button
button = Button(root, text='Convert', command=convert)
button.place(x=85,y=90)
root.mainloop()
converter()
Instead of the options being in a list, I've just dropped them into the menu when it's created. When the button is pressed, it then calls a function which decides which conversion to use, based on the value selected in the dropdown menu.
I've also changed the variable name for var1 (to "selected"), because it's not very descriptive, and got a bit confusing to code with.
Upvotes: 2