首页 > 解决方案 > 使用 grid() 编译时出现在不同行上的标签和输入字段

问题描述

我正在尝试修改一个教程(https://www.python-course.eu/tkinter_entry_widgets.php),我发现它通过一个函数创建了多个条目。我正在尝试将其从 pack() 更改为 grid(),但是当我这样做时,我的标签和输入字段位于不同的行上。我希望有人能指出我的错误并得到纠正。提前谢谢你。

import tkinter as tk

fields = 'Last Name', 'First Name', 'Job', 'Country',

def fetch(entries):
    for entry in entries:
        field = entry[0]
        text  = entry[1].get()
        print('%s: "%s"' % (field, text)) 

def makeform(root, fields):
    entries = []

    colspanlabel = 0
    colspanentry = 1
    rowspan = 0

    for field in fields:
        row = tk.Frame(root)
        lab = tk.Label(row, width=15, text=field)
        ent = tk.Entry(row)
        row.grid(row = rowspan)
        lab.grid(column= colspanlabel)
        ent.grid(column= colspanentry)
        entries.append((field, ent))

        rowspan += 1

    return entries

if __name__ == '__main__':
    root = tk.Tk()
    ents = makeform(root, fields)
    root.bind('<Return>', (lambda event, e=ents: fetch(e)))   
    b1 = tk.Button(root, text='Show',
                  command=(lambda e=ents: fetch(e)))
    b1.grid(row = 5, column = 0)
    b2 = tk.Button(root, text='Quit', command=root.quit)
    b2.grid(row = 5, column = 1)
    root.mainloop()

标签: pythontkintertkinter-entry

解决方案


推荐阅读