當我將代碼移入函數時,計算現在不起作用。抱怨: NameError:未定義全局名稱'feet' 如何解決此問題,以便方法正確地看到變量?python函數抱怨全局變量未定義
from tkinter import * # Import tkinter
from tkinter import ttk
def calculate(*args):
try:
value = float(feet.get())
meters.set((0.3048 * value * 10000.0 + 0.5)/ 10000.0)
except ValueError:
pass
def frame():
mainframe = ttk.Frame(root, padding = "3 3 12 12")
mainframe.grid(column = 0, row = 0, sticky = (N, W, E, S))
mainframe.columnconfigure(0, weight = 1)
mainframe.rowconfigure(0, weight = 1)
feet = StringVar()
meters = StringVar()
feet_entry = ttk.Entry(mainframe, width = 7, justify = CENTER, textvariable = feet)
feet_entry.grid(column = 2, row = 1, sticky = (W, E))
ttk.Label(mainframe, textvariable = meters).grid(column = 2, row = 2, sticky = (W, E))
ttk.Button(mainframe, text = "Calculate", command = calculate).grid(column = 3, row = 3, sticky = (W))
ttk.Label(mainframe, text = "feet").grid(column = 3, row = 1, sticky = (W))
ttk.Label(mainframe, text = "is equivalent to:").grid(column = 1, row = 2, sticky = (E))
ttk.Label(mainframe, text = "meters").grid(column = 3, row = 2, sticky = (W))
for child in mainframe.winfo_children(): child.grid_configure(padx = 5, pady = 5)
feet_entry.focus()
root.bind('<Return>', calculate)
# create a Tkinter window
root = Tk()
root.title("Menu Bar")
frame()
# start the event loop
root.mainloop()
的上是錯誤報道什麼線? – brycem 2014-11-21 23:31:51
看起來你已經在frame()中定義了你的腳和米變量,但是在calculate()中使用它們。嘗試在frame()之外定義兩個變量,以使它們對兩個函數都可見。 – MirekE 2014-11-22 00:02:37