2013-07-26 35 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