2015-12-12 37 views
0

我正在使用tkinter在python中创建一个简单的温度转换器。我创建了一个带有选项和转换按钮的下拉菜单。我想要做的是当下拉菜单的更改我希望按钮做不同的事情。我怎样才能做到这一点?[Python]根据下拉菜单选项更新GUI

(例如在这种情况下:如果摄氏华氏选择按钮应该转换CEL如果法尔至摄氏选择应该这样转换为华氏。)

下面是代码:

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() 

回答

1

交换你的代码一点点:

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() 

相反的选项列表之中,我刚把他们进入菜单在创建时。当按下按钮时,它会根据下拉菜单中选择的值调用决定使用哪种转换的函数。

我也更改了var1的变量名称(“选中”),因为它不是非常具有描述性,并且让代码变得有点混乱。

相关问题