使用按钮 Tkinter 创建新的输入框 [英] Creating new entry boxes with button Tkinter

查看:29
本文介绍了使用按钮 Tkinter 创建新的输入框的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当用户决定输入更多输入时,如何让按钮在下方添加两个框(并排)?

How do i make the button to add two box (side by side) below when it is being clicked as the user decided to put more input?

def addBox():
    labelframe = Tkinter.Frame()
    labelframe.bind("<Add Input>", callback)
    labelframe.pack()

labelframe = Tkinter.Frame()

labelFrom = Tkinter.Label(labelframe, text= "from")
labelFrom.grid(column=1, row=0)
e = Tkinter.Entry(labelframe)
e.grid(column=1, row=1)

labelTo = Tkinter.Label(labelframe, text= "to")
labelTo.grid(column=2, row=0)
e2 = Tkinter.Entry(labelframe)
e2.grid(column=2, row=1)

labelframe.pack()

addboxButton = Button( root,text='<Add Time Input>', fg="Red",command="addBox")
addboxButton.pack(side=Tkinter.TOP)

推荐答案

这是如何添加 Entry 的示例.

This is example how to add Entry.

可能是因为您在 command=addBox

因为您必须从条目中获取值,所以您必须将它们记在列表中.
我添加了从条目中打印文本的按钮.

Because you will have to get values from entries you have to remeber them on list.
I add button which print text from entries.

from Tkinter import *

#------------------------------------

def addBox():
    print "ADD"

    ent = Entry(root)
    ent.pack()

    all_entries.append( ent )

#------------------------------------

def showEntries():

    for number, ent in enumerate(all_entries):
        print number, ent.get()

#------------------------------------

all_entries = []

root = Tk()

showButton = Button(root, text='Show all text', command=showEntries)
showButton.pack()

addboxButton = Button(root, text='<Add Time Input>', fg="Red", command=addBox)
addboxButton.pack()

root.mainloop()

#------------------------------------

<小时>

并排盒子的例子.

我使用新框架通过 grid() 并排保存条目.
这样我就不会在主窗口/框架中将 grid()pack() 混合.

I use new frame to keep entries side by side using grid().
This way I don't mix grid() with pack() in main window/frame.

我使用 len(all_entries) 来获取下一个空闲列的数量.

I use len(all_entries) to get number of next free column.

from Tkinter import *

#------------------------------------

def addBox():
    print "ADD"

    # I use len(all_entries) to get nuber of next free column
    next_column = len(all_entries)

    # add label in first row 
    lab = Label(frame_for_boxes, text=str(next_column+1))
    lab.grid(row=0, column=next_column)

    # add entry in second row
    ent = Entry(frame_for_boxes)
    ent.grid(row=1, column=next_column)

    all_entries.append( ent )

#------------------------------------

def showEntries():

    for number, ent in enumerate(all_entries):
        print number, ent.get()

#------------------------------------

all_entries = []

root = Tk()

showButton = Button(root, text='Show all text', command=showEntries)
showButton.pack()

addboxButton = Button(root, text='<Add Time Input>', fg="Red", command=addBox)
addboxButton.pack()

frame_for_boxes = Frame(root)
frame_for_boxes.pack()

root.mainloop()

#------------------------------------

另一个例子:

from Tkinter import *

#------------------------------------

def addBox():
    print "ADD"

    frame = Frame(root)
    frame.pack()

    Label(frame, text='From').grid(row=0, column=0)

    ent1 = Entry(frame)
    ent1.grid(row=1, column=0)

    Label(frame, text='To').grid(row=0, column=1)

    ent2 = Entry(frame)
    ent2.grid(row=1, column=1)

    all_entries.append( (ent1, ent2) )

#------------------------------------

def showEntries():

    for number, (ent1, ent2) in enumerate(all_entries):
        print number, ent1.get(), ent2.get()

#------------------------------------

all_entries = []

root = Tk()

showButton = Button(root, text='Show all text', command=showEntries)
showButton.pack()

addboxButton = Button(root, text='<Add Time Input>', fg="Red", command=addBox)
addboxButton.pack()

root.mainloop()

#------------------------------------

这篇关于使用按钮 Tkinter 创建新的输入框的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆