Tkinter和ttk python2.7

use*_*141 2 python tk-toolkit tkinter ttk

我发现这个代码在线,我想尝试一下,因为我试图找出如何在我输入消息框时更改标签.我尝试了getmethod,但我一直在努力使用它.所以我发现了这个代码,当我尝试它时,我得到的错误是ttk未定义但显然是.

from Tkinter import *
from ttk import *

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 = ttkEntry(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()
Run Code Online (Sandbox Code Playgroud)

回溯(最近一次调用最后一次):文件"tk8.py",第15行,在mainframe = ttk.Frame(root,padding ="3 3 12 12")NameError:名称'ttk'未定义

DSM*_*DSM 7

所以我发现了这个代码,当我尝试它时,我得到的错误是ttk未定义但显然是.

但是,你是使用模块模块导入星号from ttk import *,因此名称ttk不引用任何内容.例如,from math import *将带来sin,cos等等,所有到您的命名空间,但名称math仍然是不确定的.如果我将导入切换为,代码适用于我

from Tkinter import *
import ttk
Run Code Online (Sandbox Code Playgroud)

并添加缺少.ttk.Entry这一行:

feet_entry = ttk.Entry(mainframe, width=7, textvariable=feet)
Run Code Online (Sandbox Code Playgroud)