Python 如何在tkinter中添加第二行?

Python 如何在tkinter中添加第二行?,python,tkinter,Python,Tkinter,我需要用计算功能将第二行添加到第一行。在这段代码中怎么做 import tkinter as tk root = tk.Tk() root.geometry('850x450') var1 = tk.StringVar() t1 = tk.Entry(root, textvariable=var1).grid(row=1,column=1) var2 = tk.StringVar() t2 = tk.Entry(root, textvariable=var2).grid(row=1,colu

我需要用计算功能将第二行添加到第一行。在这段代码中怎么做

import tkinter as tk

root = tk.Tk()
root.geometry('850x450')

var1 = tk.StringVar()
t1 = tk.Entry(root, textvariable=var1).grid(row=1,column=1)
var2 = tk.StringVar()
t2 = tk.Entry(root, textvariable=var2).grid(row=1,column=2)
result = tk.StringVar()
l = tk.Label(root, textvariable=result).grid(row=1,column=3)

N = 3 # number of decimals that you want
def set_label(name, index, mode):
    if var1.get() == '' or var2.get() == '':
        pass
    else:
        res = float(var1.get()) * float(var2.get())
        result.set('{number:.{digits}f}'.format(number=res, digits=N))

var1.trace('w', set_label)
var2.trace('w', set_label)

root.mainloop()

提前感谢…

如果要创建多行小部件,可以创建一个数组来存储小部件引用,并使用循环在网格中创建小部件

import tkinter as tk

root = tk.Tk()
root.geometry('850x450')

lstentry = []  # all entries
lstlabel = []  # all labels

for ctr in range(5):   # 5 rows
    var1 = tk.StringVar()
    t1 = tk.Entry(root, textvariable=var1).grid(row=ctr+1,column=1)
    var2 = tk.StringVar()
    t2 = tk.Entry(root, textvariable=var2).grid(row=ctr+1,column=2)
    result = tk.StringVar()
    result.set('label ' +str(ctr+1))
    l = tk.Label(root, textvariable=result).grid(row=ctr+1,column=3)
    lstentry.append(var1)
    lstentry.append(var2)
    lstlabel.append(l)

N = 3 # number of decimals that you want
def set_label(name, index, mode):
    if var1.get() == '' or var2.get() == '':
        pass
    else:
        res = float(var1.get()) * float(var2.get())
        result.set('{number:.{digits}f}'.format(number=res, digits=N))

var1.trace('w', set_label)
var2.trace('w', set_label)

root.mainloop()
输出


将行创建逻辑分离到功能
添加行(行编号)


你能说得更具体些吗?您想在何处添加行以及尝试添加行时出现的问题。在这段代码中如何使用treeview插入函数我想使用这段代码列表框。插入(“”,'end',values=('name',var1.get(),var2.get(),result.get())请提供任何建议。。
import tkinter as tk

root = tk.Tk()
root.geometry('850x450')

def add_row(row_number):
    var1 = tk.StringVar()
    t1 = tk.Entry(root, textvariable=var1).grid(row=row_number,column=1)
    var2 = tk.StringVar()
    t2 = tk.Entry(root, textvariable=var2).grid(row=row_number,column=2)
    result = tk.StringVar()
    l = tk.Label(root, textvariable=result).grid(row=row_number,column=3)

    N = 3 # number of decimals that you want
    def set_label(name, index, mode):
        if var1.get() == '' or var2.get() == '':
            pass
        else:
            res = float(var1.get()) * float(var2.get())
            result.set('{number:.{digits}f}'.format(number=res, digits=N))

    var1.trace('w', set_label)
    var2.trace('w', set_label)

NUMBER_OF_ROWS = 10
for row_number in range(1, NUMBER_OF_ROWS+1):
    add_row(row_number)

root.mainloop()