我正在创建一个待办事项列表以获得乐趣,我在将列表带入不同功能时遇到了麻烦。该程序的目标是用户按下“新任务”按钮并输入内容,然后将字符串添加到列表中,然后通过列表框显示。这是我到目前为止所拥有的。
P.S忽略DelTask功能,因为它仍然是WIP
from Tkinter import *
import Tkinter
import tkMessageBox
import sys
count = 0
class ToDoList:
def __init__(self):
#print testlist
self._count = 0
self.main_window = Tkinter.Tk()
#size
self.main_window.minsize(1000,800)
self.main_window.maxsize(1000,800)
#frames
self.title_frame = Tkinter.Frame(self.main_window)
#self.side_frame = Tkinter.Frame(self.main_window)
#labels
self.title = Tkinter.Label(self.title_frame, text = 'To Do List', font = ("Purisa",30))
self.title2 = Tkinter.Label(self.title_frame, text = 'By Kevin', font = ("Purisa",15))
#buttons
self.newtask_button = Tkinter.Button(self.main_window, text='New Task', command = self.NewTask, width=20)
self.newtask_button.grid()
self.deltask_button = Tkinter.Button(self.main_window, text='Delete Task', command = self.DelTask, width=20)
self.deltask_button.grid()
#execute
self.title.pack(side='top')
self.title2.pack(side='top')
self.title_frame.pack(side='top')
self.newtask_button.pack(padx=4, pady=4)
self.deltask_button.pack(padx=1, pady=1)
#list stuff
listbox = Listbox(self.main_window, width=100, height = 100, font=('Fixed',20) )
listbox.pack()
#print testlist
Tkinter.mainloop()
def NewTask(self):
self.newtask_window = Tkinter.Tk()
self.newtask_window.minsize(250,150)
self.newtask_window.maxsize(250,150)
#text
self.task_label = Tkinter.Label(self.newtask_window, text='Enter Task.')
self.task_label.pack()
#entry
self.task_entry = Tkinter.Entry(self.newtask_window, width=30)
self.task_entry.pack()
#button
self.task_button = Tkinter.Button(self.newtask_window, text='Ok', command = self.NewTaskCount, width = 20)
self.task_button.pack()
Tkinter.mainloop()
def NewTaskCount(self):
listbox = Listbox(self.main_window, width=100, height = 100, font=('Fixed',20) )
listbox.pack()
self._count += 1
self.newtask_window.destroy()
def DelTask(self):
tkMessageBox.showinfo('Title', 'Task Deleted')
program = ToDoList()
答案 0 :(得分:1)
您正在错误地使用Tkinter。您应该始终只创建Tk
类的一个实例,并在程序的生命周期中恰好调用mainloop
一次。如果您想要多个窗口,则在创建Tk
实例后,任何其他窗口都需要是Toplevel
的实例。