2012-10-28 125 views
-1
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() 

所以,当我编辑它,我得到:更新!: Tkinter的Python 2.7版的问题

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 
+3

你混合了两件好建议。尝试'Tkinter.Tk()'在违规行中。 – Junuxx

+1

如果你已经附加到你的问题而不是全部替换它,这将是最好的。现在看起来好像甘达罗和jab9bansai给出了不正确的答案,而他们实际上非常有帮助。 – Junuxx

+1

@ user173314按照Junuxx的建议。 Tk()是模块Tkinter中的一个类,当你简单地导入Tkinter时,python需要知道魔术术语Tk()来自哪里,在这种情况下,它来自你导入的模块。如果您阅读Gandaro提供的URL,它将帮助您大大地了解这一点。 – jab

回答

1

既然你“从*”的Tkinter进口的,你不能用它的名字来引用它。要在程序中使用的名称Tkinter你必须将其导入这样的:

import Tkinter 

,或者你只是从你的代码中删除了“Tkinter.”,离开import语句,像这样。

请仔细阅读http://docs.python.org/2/tutorial/modules.html

4

尝试只调用框架(),而不是Tkinter.Frame()。你已经使用了一个野生进口是这行代码...

from Tkinter import * 

命名空间“的Tkinter”因此已通过语句定义和每个invididual方法和类弗罗姆该命名空间现在可以直接使用。

Tkinter.Frame()将在工作情况下使用

import Tkinter 

代替前者的。如果存在其他问题,我还没有测试过您的代码。