亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 tkinter 中添加第二行?

如何在 tkinter 中添加第二行?

Helenr 2023-08-08 17:21:28
我需要使用計算函數將第二行添加到與第一行相同的位置。這段代碼該怎么做import tkinter as tkroot = 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 wantdef 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()提前致謝...
查看完整描述

2 回答

?
墨色風雨

TA貢獻1853條經驗 獲得超6個贊

如果要創建多行小部件,可以創建一個數組來存儲小部件引用,并使用循環在網格中創建小部件。


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()

輸出

https://img1.sycdn.imooc.com//64d2093b000192b803130160.jpg

查看完整回答
反對 回復 2023-08-08
?
慕姐4208626

TA貢獻1852條經驗 獲得超7個贊

將行創建邏輯與功能分開add_row(row_number):


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()


查看完整回答
反對 回復 2023-08-08
  • 2 回答
  • 0 關注
  • 150 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號