2012-11-23 24 views
3

大部分代碼由我的教授提供,我必須對其格式進行更改。但是,當我運行該程序時,他的原始代碼甚至沒有在tk框中提供任何東西。我做了一些改變,但沒有什麼工作。任何建議?爲什麼在Python中輸入這段代碼時會得到一個空白的Tkinter盒子?

這是我的主要代碼:

from Tkinter import * 
import todo 
master = Tk() 

class todoApp(): 

    def __init__(self, master): 
     self.master = master 
     self.frame = Frame(master) 
     self.frame.grid() 
     self.todo = todo.todoList() 

     self.saveButton = Button(self.frame, text="Save", command=self.save) 
     self.saveButton.grid() 
     self.restoreButton = Button(self.frame, text="Restore", command = self.restore) 
     self.restoreButton.grid(row=1, column=1) 
     self.addButton = Button(self.frame, text="Add", command=self.add) 
     self.addButton.grid(row=0,column=2) 
     self.doneButton = Button(self.frame, text="Done", command=self.done) 
     self.doneButton.grid(row=0,column=3) 
     self.button = Button(self.frame, text="Quit", command=self.quit) 
     self.button.grid(row=0, column=4) 

     label = Label(self.frame, text="New Task: ") 
     label.grid() 
     self.entry = Entry(self.frame) 
     self.entry.grid(row=1, column=1, columnspan=4) 

     frame1 = LabelFrame(self.frame, text="Tasks") 
     frame1.grid(columnspan=5, sticky=E+W) 
     frame1.columnconfigure(0,weight=1) 
     self.tasks = Listbox(frame1) 
     self.tasks.grid(sticky=E+W) 

     frame2 = LabelFrame(self.frame, text="Completed") 
     frame2.grid(columnspan=5, sticky=E+W) 
     frame2.columnconfigure(0,weight=1) 
     self.completed = Listbox(frame2) 
     self.completed.grid(sticky=E+W) 


    def save(self): 
     self.todo.saveList("tasks.txt") 

    def restore(self): 
     self.todo.restoreList("tasks.txt") 
     items = self.todo.getTasks() 
     self.tasks.delete(0,END) 
     for item in [ "study", "grocery shop", "cram for finals!", "sleep", "build a gingerbread house" ]: 
      self.tasks.insert(END,item) 
     items = self.todo.getCompleted() 
     self.completed.delete(0,END) 
     for item in items: 
      self.completed.insert(END,item) 

    def add(self): 
     task = self.entry.get() 
     self.todo.addTask(task) 
     self.tasks.insert(END,task) 

    def done(self): 
     selection = self.tasks.curselection() 
     if len(selection) == 0: 
      return 
     task = self.tasks.get(selection[0]) 
     self.todo.completeTask(task) 
     self.tasks.delete(selction[0]) 
     self.completed.insert(END,task) 

    def quit(self): 
     self.frame.quit() 
     self.master.destroy() 

master.mainloop() 

todo進口是:

class todoList: 
    def __init__(self): 
     self.todo = [] 
     self.done = [] 

    def addTask(self,task): 
     self.todo.append(task) 

    def completeTask(self,task): 
     if self.todo.count(task) > 0: 
      self.todo.remove(task) 
      self.done.append(task) 

    def getTasks(self): 
     return self.todo 

    def getCompleted(self): 
     return self.done 
+1

如果您將此代碼設置爲顯示意外行爲的_minimal_示例,那將會很不錯。 –

回答

1

它就像你沒有創建類的實例,在我看來。

在你的文件的底部,補充一點:

myApp = todoApp(master) 
master.mainloop() 

這可能是因爲他們必須按相反的順序(我在工作,所以我不能嘗試它現在)。

2

您還沒有創建類todoApp的一個實例,

加入這一行的位置:

def quit(self): 
    self.frame.quit() 
    self.master.destroy() 

a = todoApp(master) 

master.mainloop() 

你確實需要更動定位不過,當我運行它,它看起來有點亂。

編輯:

這正是你在找什麼?

from Tkinter import * 
import todo 
master = Tk() 

class todoApp(): 

    def __init__(self, master): 
     self.master = master 
     self.frame = Frame(master) 
     self.frame.grid() 
     self.todo = todo.todoList() 

     self.buttonframe = LabelFrame(self.frame, text='controls') 
     self.buttonframe.grid(row=0, column=0, columnspan=2) 
     self.saveButton = Button(self.buttonframe, text="Save", command=self.save) 
     self.saveButton.grid() 
     self.restoreButton = Button(self.buttonframe, text="Restore", command = self.restore) 
     self.restoreButton.grid(row=0, column=1) 
     self.addButton = Button(self.buttonframe, text="Add", command=self.add) 
     self.addButton.grid(row=0,column=2) 
     self.doneButton = Button(self.buttonframe, text="Done", command=self.done) 
     self.doneButton.grid(row=0,column=3) 
     self.button = Button(self.buttonframe, text="Quit", command=self.quit) 
     self.button.grid(row=0, column=4) 

     label = Label(self.frame, text="New Task: ") 
     label.grid(row=1, column=0) 
     self.entry = Entry(self.frame) 
     self.entry.grid(row=1, column=1) 

     frame1 = LabelFrame(self.frame, text="Tasks") 
     frame1.grid(columnspan=5, sticky=E+W) 
     frame1.columnconfigure(0,weight=1) 
     self.tasks = Listbox(frame1) 
     self.tasks.grid(sticky=E+W) 

     frame2 = LabelFrame(self.frame, text="Completed") 
     frame2.grid(columnspan=5, sticky=E+W) 
     frame2.columnconfigure(0,weight=1) 
     self.completed = Listbox(frame2) 
     self.completed.grid(sticky=E+W) 


    def save(self): 
     self.todo.saveList("tasks.txt") 

    def restore(self): 
     self.todo.restoreList("tasks.txt") 
     items = self.todo.getTasks() 
     self.tasks.delete(0,END) 
     for item in [ "study", "grocery shop", "cram for finals!", "sleep", "build a gingerbread house" ]: 
      self.tasks.insert(END,item) 
     items = self.todo.getCompleted() 
     self.completed.delete(0,END) 
     for item in items: 
      self.completed.insert(END,item) 

    def add(self): 
     task = self.entry.get() 
     self.todo.addTask(task) 
     self.tasks.insert(END,task) 

    def done(self): 
     selection = self.tasks.curselection() 
     if len(selection) == 0: 
      return 
     task = self.tasks.get(selection[0]) 
     self.todo.completeTask(task) 
     self.tasks.delete(selection[0]) 
     self.completed.insert(END,task) 

    def quit(self): 
     self.frame.quit() 
     self.master.destroy() 

a = todoApp(master) 

master.mainloop() 
+0

非常感謝! 我設法修復所有的東西;然而,我堅持試圖圍繞我的「保存」「恢復」和「退出」按鈕(標題命令)做一個labelframe。 沒有人知道如何偶然地做到這一點? –

+0

這是你在找什麼? self.frame = LabelFrame(master,text ='buttons')在你的例子中你使用了一個普通的框架,而不是標籤框架?這是學習tk和ttk的好資源 – jbaldwin

+0

buttonframe = LabelFrame(self.frame,text ='buttons') buttonframe.grid(http://www.tkdocs.com/tutorial/complex.html? () saveButton = Button(buttonframe,text =「Save」,command = self.save) saveButton.grid() restoreButton = Button(buttonframe,text =「Restore」,command = self.restore) restoreButton.grid (row = 0,column = 1) addButton = Button(buttonframe,text =「Add」,command = self.add) addButton.grid(row = 0,column = 2) doneButton = Button(buttonframe,text = (行= 0,列= 3) button = Button(buttonframe,text =「Quit」,command = self.quit)button.grid(row = 0,列= 4) – jbaldwin

相關問題