2013-07-26 37 views
0

我有以下代码:执行Tkinter的代码成功(Python 2.7版)

from Tkinter import * 

    class App(Frame): 
     def __init__(self, master): 
      Frame.__init__(self, master) 
      self.grid() 
      self.create_widgets() 

     def create_widgets(self): 
      self.entryLabel = Label(self, text="Please enter a list of numbers (no commas):") 
      self.entryLabel.grid(row=0, column=0, columnspan=2) 

      self.listEntry = Entry(self) 
      self.listEntry.grid(row=0, column=2, sticky=E) 

      self.entryLabel = Label(self, text="Please enter an index value:") 
      self.entryLabel.grid(row=1, column=0, columnspan=2, sticky=E) 

      self.indexEntry = Entry(self) 
      self.indexEntry.grid(row=1, column=2) 

      self.runBttn = Button(self, text="Run Function", command=self.psiFunction) 
      self.runBttn.grid(row=2, column=0, sticky=W) 

      self.answerLabel = Label(self, text="Output List:") 
      self.answerLabel.grid(row=2, column=1, sticky=W) 

     def psiFunction(self): 
      j = int(self.indexEntry.get()) 
      valueList = list(self.listEntry.get()) 
      x = map(int, valueList) 
      if x[0] != 0: 
       x.insert(0, 0) 
      rtn = [] 
      for n2 in range(0, len(x) * j - 2): 
       n = n2/j 
       r = n2 - n * j 
       rtn.append(j * x[n] + r * (x[n + 1] - x[n])) 
      self.answer = Label(self, text=rtn) 
      self.answer.grid(row=2, column=2, sticky=W) 


    if __name__ == "__main__": 
     root = Tk() 
     app = App(root) 
     root.mainloop() 

但每次我尝试运行它,它给了我的语法错误的时间。特别是,它告诉我,缩进存在问题(意外缩进)。我无法在IDLE中运行它,因为主循环会产生问题,而且我似乎遇到了错误,试图通过终端甚至科莫多来运行它。有没有人有一个确定的,一步一步的方式让它运行?真的有语法错误吗?谢谢。

+0

什么是语法错误? – mbdavis

+0

@mbdavis编辑。他们是缩进错误。 – 114

+0

@Stopwatch类和如果__name__ ==“__main__”:应该在主级别,所以低于导入一级别unindent一切 – mbdavis

回答

2

看起来你有一些缩进问题。 Python不是免费的,所以你需要注意缩进:

from Tkinter import * 

class App(Frame): 
    def __init__(self, master): 
     Frame.__init__(self, master) 
     self.grid() 
     self.create_widgets() 

    def create_widgets(self): 
     self.entryLabel = Label(self, text="Please enter a list of numbers (no commas):") 
     self.entryLabel.grid(row=0, column=0, columnspan=2) 

     self.listEntry = Entry(self) 
     self.listEntry.grid(row=0, column=2, sticky=E) 

     self.entryLabel = Label(self, text="Please enter an index value:") 
     self.entryLabel.grid(row=1, column=0, columnspan=2, sticky=E) 

     self.indexEntry = Entry(self) 
     self.indexEntry.grid(row=1, column=2) 

     self.runBttn = Button(self, text="Run Function", command=self.psiFunction) 
     self.runBttn.grid(row=2, column=0, sticky=W) 

     self.answerLabel = Label(self, text="Output List:") 
     self.answerLabel.grid(row=2, column=1, sticky=W) 

    def psiFunction(self): 
     j = int(self.indexEntry.get()) 
     valueList = list(self.listEntry.get()) 
     x = map(int, valueList) 
     if x[0] != 0: 
      x.insert(0, 0) 
     rtn = [] 
     for n2 in range(0, len(x) * j - 2): 
      n = n2/j 
      r = n2 - n * j 
      rtn.append(j * x[n] + r * (x[n + 1] - x[n])) 
     self.answer = Label(self, text=rtn) 
     self.answer.grid(row=2, column=2, sticky=W) 


if __name__ == "__main__": 
    root = Tk() 
    app = App(root) 
    root.mainloop() 
+0

非常感谢。 – 114