如何删除选中按钮

2024-06-16 09:44:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经建立了一个简单的待办事项列表,我正试图让复选框在选中时自动删除(以表示任务已完成)

我不确定我需要如何实现函数才能删除它本身。有人能帮我吗。我已经把一个页面列表梳理了一遍,但没有一个页面真正指出你是如何做到这一点的。在

class App(object):

def __init__(self, master):
    self.master = master
    self.frame = Frame(master)
    self.frame.grid()
    self.addFrame = Frame(master)
    self.addFrame.grid(row=0, column=0, columnspan=2, sticky='N')
    self.listFrame = Frame(master)
    self.listFrame.grid(row=1, column=0, columnspan=2, sticky='NW')
    self.todoList = []
    self.initUI()

def initUI(self):

    self.entryBox = Entry(self.frame, width = 15)
    self.entryBox.grid(row=0, column=0, sticky='N')

    self.addButton = Button(self.frame, text="<-ADD->", command=self.add)
    self.addButton.grid(row=0, column=1, sticky='N')


def removeCheckButton(self):
    # - CONFUSED HOW TO REMOVE THE SPECIFIC CHECKBUTTON
    pass

def add(self):
    entry = self.entryBox.get()
    self.entryBox.delete(0, END)
    self.todoList.append(entry)
    print self.todoList
    var1 = IntVar()
    self.buttonList = []
    for n in range(len(self.todoList)):
        lx = Checkbutton(self.listFrame, text=self.todoList[n], variable=self.todoList[n], command=removeCheckButton)
        lx.grid(row=n, column=0, sticky='NW')
        self.buttonList.append(lx)
        print self.buttonList

Tags: selfmaster列表defcolumnframegridrow
1条回答
网友
1楼 · 发布于 2024-06-16 09:44:44

看看这个。您的add的设计有点奇怪(IMO也不正确),所以我对它以及其他部分做了一些修改。在

from tkinter import *


class App(object):

    def __init__(self, master):
        self.master = master
        self.frame = Frame(master)
        self.frame.grid()
        self.addFrame = Frame(master)
        self.addFrame.grid(row=0, column=0, columnspan=2, sticky='N')
        self.listFrame = Frame(master)
        self.listFrame.grid(row=1, column=0, columnspan=2, sticky='NW')
        self.todoList = []
        self.buttonList = []  #< - button list is here now
        self.initUI()

    def initUI(self):

        self.entryBox = Entry(self.frame, width = 15)
        self.entryBox.grid(row=0, column=0, sticky='N')

        self.addButton = Button(self.frame, text="<-ADD->", command=self.add)
        self.addButton.grid(row=0, column=1, sticky='N')


    def removeCheckButton(self, button_no):
        # - CONFUSED HOW TO REMOVE THE SPECIFIC CHECKBUTTON
       # print(button_no, self.buttonList[button_no])
        #self.buttonList[button_no].grid_forget()
        self.buttonList[button_no].destroy()
       # del self.buttonList[button_no]
       # del self.todoList[button_no]


    def add(self):
        entry = self.entryBox.get()
        self.entryBox.delete(0, END)
        self.todoList.append(entry)
        print(self.todoList)
        var1 = IntVar()
        #self.buttonList = [] #< - not sense having this here
      #  for n in range(len(self.todoList)): #<  this for also very strange here.
        n = len(self.buttonList)
        lx = Checkbutton(self.listFrame,
                         text=self.todoList[n],
                         variable=self.todoList[n],
                         command=lambda ni=n: self.removeCheckButton(ni))
        lx.grid(row=n, column=0, sticky='NW')
        self.buttonList.append(lx)
         #   print(self.buttonList)


root = Tk()
app = App(root)
root.mainloop()

p.S。 我使用python3,但是除了import part,代码应该为您执行。也许它需要更多的修复,但是这些复选框现在被销毁了。在

相关问题 更多 >