[英]Why am I getting a blank Tkinter box when typing it this code in Python?
大部分代碼是我的教授提供的,我必須對他的格式進行更改。 但是,當我運行程序時,他的原始代碼甚至沒有在 tk 框中提供任何內容。 我做了一些更改,但沒有任何效果。 有什么建議嗎??
這是我的主要代碼:
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
您還沒有創建類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()
在我看來,您還沒有創建類的實例。
在文件底部,添加以下內容:
myApp = todoApp(master)
master.mainloop()
可能是它們必須按相反的順序排列(我正在工作,所以我現在無法嘗試)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.