import Tkinter
import tkMessageBox
class MyApp(object):
def __init__(self):
self.topFrame = Tkinter.Frame()
self.root = Tk()
self.root.wm_title("My first window!")
self.label = Label(self.root, text="Enter your weight")
self.label.pack(padx=20,pady=10)
self.labeltext = StringVar()
self.labeltext.set("Enter your height!")
Label(self.root, textvariable=self.labeltext).pack()
self.entrytext2 = StringVar()
Entry(self.root, textvariable=self.entrytext2).pack()
self.entrytext2.trace('w', self.entry_changed)
self.buttontext = StringVar()
self.buttontext.set("Bouton")
Button(self.root, textvariable=self.buttontext, command=self.clicked1).pack()
self.entrytext = StringVar()
Entry(self.root, textvariable=self.entrytext).pack()
self.entrytext.trace('w', self.entry_changed)
def calcBMI(self):
weight = float(self.entrytext2.get())
inches = float(self.entrytext.get())
BMI = (weight * 703)/ inches **2
if BMI > 18.5 and BMI < 25:
self.labeltext.set(BMI)
elif BMI < 18.5:
print ' Your BMI is Underweight ', self.value.set(BMI)
else:
print ' Your BMI is Overweight ', self.value.set(BMI)
def clicked1(self):
response = tkMessageBox.askyesno("Confirm", "You clicked?")
if response:
self.labeltext.set("You've been clicked!")
self.buttontext.set("Butttttttton")
print response
MyApp()
因此,当我编辑它时,我得到:
File "window1.py", line 45, in <module>
MyApp()
File "window1.py", line 7, in __init__
self.root = Tk()
NameError: global name 'Tk' is not defined
答案 0 :(得分:4)
尝试只调用Frame(),而不是Tkinter.Frame()。你已经使用了这个代码行的狂野导入......
from Tkinter import *
因此,命名空间“Tkinter”已经通过该语句定义,并且每个invididual方法和类frome该命名空间现在可以直接使用。
Tkinter.Frame()适用于使用
的情况import Tkinter
而不是前者。如果存在进一步的问题,我还没有测试你的代码。
答案 1 :(得分:1)
由于您从Tkinter导入了“* from”,因此无法使用其名称来引用它。要在程序中使用名称Tkinter
,您必须将其导入:
import Tkinter
或者您只需从代码中删除“Tkinter.
”并保留import语句。