使用按钮单击Python tkinter删除行时更改行号

时间:2018-01-07 16:53:30

标签: python tkinter

我制作了一个GUI,当点击一个按钮时,它会添加2个输入框。

  • 第一个输入框显示行数。
  • 第二个输入框显示了一些值。

在输入框旁边,我做了一个按钮(“ - ”)。单击该按钮时,它会销毁条目和“ - ”按钮。

我想更改行号,以便在点击按钮时符合订单。如果我添加6行并删除第4行,我会有行号:1,2,3,5,6。我想要1,2,3,4,5。

from tkinter import *
from tkinter import ttk

myApp = Tk()
myApp.title(" MY GUI")                         
myApp.geometry("700x599")

num_rows = 1

class Adding(object):
    def Finish(self):

        global num_rows

        num_rows += 1
        n=num_rows-1

        def delete():
            bdelete.destroy()
            newE0.destroy()
            newE1.destroy()

        bdelete=Button(myApp,text="-",command=delete)    
        newE0=Entry(myApp,width=2)
        newE1=Entry(myApp,width=10)

        bdelete.grid(column=0,row=num_rows,padx=3)    
        newE0.grid(column=1,row=num_rows,padx=3)
        newE1.grid(column=2,row=num_rows,padx=3)

        newE0.insert(0,n)
        newE1.insert(0,5)

    def __init__(self):

        button4=Button(myApp,text="Finish",width="17", command=self.Finish)
        button4.grid(row=0,column=3,sticky="w",pady=3 )

Adding=Adding()
myApp.mainloop()

1 个答案:

答案 0 :(得分:0)

这就是你想要的。

你必须以某种方式记住这些条目。我使用了班级名单。 我还改变了代码的结构,因此它不使用全局变量。

from tkinter import *
from tkinter import ttk


class Adding(Tk):
    entry_list = []
    num_rows = 1

    def __init__(self):
        Tk.__init__(self)
        self.title(" MY GUI")
        self.geometry("700x599")

        button4 = Button(self, text="Finish", width="17", command=self.finish)
        button4.grid(row=0, column=3, sticky="w", pady=3)

    def finish(self):
        self.num_rows += 1

        newE0 = Entry(self, width=2)
        newE1 = Entry(self, width=10)
        self.entry_list.append(newE0)

        def delete():
            bdelete.destroy()
            newE0.destroy()
            newE1.destroy()
            self.entry_list.remove(newE0)
            self.update_values()

        bdelete = Button(self, text="-", command=delete)

        bdelete.grid(column=0, row=self.num_rows, padx=3)
        newE0.grid(column=1, row=self.num_rows, padx=3)
        newE1.grid(column=2, row=self.num_rows, padx=3)

        n = len(self.entry_list)
        newE0.insert(0, n)
        newE1.insert(0, 5)

    def update_values(self):
        for i, entry in enumerate(self.entry_list):
            entry.delete(0, "end")
            entry.insert(0, i + 1)


myApp = Adding()
myApp.mainloop()