2015-05-05 111 views
0

我在網上找到了這段代碼。我有幾個關於它的問題。當我運行該程序時,它說「相當於」#米。 #在哪裏/如何被切換出來?是否通過使用標籤來切換?每次點擊計算時標籤都不會重疊?謝謝。這段代碼是如何工作的?更改標籤?

from tkinter import * 
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 

root = Tk() 
root.title("Feet to Meters") 

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

root.mainloop() 

回答

0

meters被定義爲StringVar,以及標籤中的一個被使用textvariable=meters定義。因此,標籤直接從StringVar中獲取其值,因此當您使用meters.set更改變量時,標籤的值將自動更改。方便的功能瞭解!

+0

謝謝你非常 – vanillacoke9191

1

嘗試在交互式Python外殼下面來了解這是怎麼回事:

>>> from tkinter import * 
>>> root = Tk() 
>>> myvar = StringVar() 
>>> Label(root, text='Before').pack(side=LEFT) 
>>> Label(root, textvar=myvar).pack(side=LEFT) 
>>> Label(root, text='After').pack(side=LEFT) 

現在使用set方法改變myvar值,看會發生什麼情況的窗口:

>>> myvar.set('foo bar')