我制作了一个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()
答案 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()