[英]Passing List between Functions with Tkinter
I am making a To-Do List for fun and I'm having troubles with bringing lists to different functions. 我正在制作待办事项清单,但很麻烦,无法将清单用于其他功能。 The goal of the program is that the user presses the "New Task" button and inputs something and then the string is added to the list, then shown via Listbox. 该程序的目标是用户按下“新建任务”按钮并输入内容,然后将字符串添加到列表中,然后通过列表框显示。 Here is what I have so far. 这是我到目前为止所拥有的。
PS Ignore the DelTask function as that is still WIP PS忽略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()
You're using Tkinter incorrectly. 您使用的Tkinter错误。 You should always create exactly one instance of the Tk
class and call mainloop
exactly once during the life of your program. 您应该始终只创建Tk
类的一个实例,并在程序生命mainloop
仅一次调用mainloop
。 If you want multiple windows, after creating the instance of Tk
, any other windows need to be an instance of Toplevel
. 如果要多个窗口,则在创建Tk
实例后,其他所有窗口都必须是Toplevel
的实例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.