【问题标题】:Adding elements using Tkinter Dynamically使用 Tkinter 动态添加元素
【发布时间】:2020-09-19 10:57:49
【问题描述】:

我正在尝试创建具有添加按钮的程序,当单击它时,输出窗口上应出现几个不同的元素,如条目和按钮。首先,我无法正确构建显示,其次,我不确定如何获取用户在 Tkinter 的条目小部件中输入的值。 这是代码:

from tkinter import *
from tkinter import messagebox
lb = Tk()

def addentry():
    i = 3    // the 3 here should keep on incrementing so that the row goes on increasing as the user 
                keeps on adding different entries. This is for the display
    ent1 = Entry(lb, bd=5).grid(row =i ,column= 0)
    ent2 = Entry(lb, bd=5).grid(row = i, column=2)
    ent3 = Entry(lb, bd=5).grid(row = i, column=4)
    ent4 = Entry(lb, bd=5).grid(row = i , column=6)


addent = Button(lb, text = "Add Entry",command = addentry).grid(row = 0, column = 2)

【问题讨论】:

标签: python button tkinter dynamic tkinter-entry


【解决方案1】:

这都是关于保持引用的。引用用于标识对象。

import tkinter as tk

root = tk.Tk()
my_entries = []
entry_row = 1
def addentry():
    global entry_row
    ent = tk.Entry(root, bd=5)
    ent.grid(row =entry_row ,column= 0)

    my_entries.append(ent)
    entry_row = entry_row+1

def getter():
    for entry in my_entries:
        my_stuff = entry.get()
        print(my_stuff)
    

addent = tk.Button(root, text = "Add Entry",command = addentry)
addent.grid(row = 0, column = 0)
getent = tk.Button(root,text='get input', command= getter)
getent.grid(row=0, column=1)


root.mainloop()

在这个示例中,我们保留了tk.Entry 和变量entry_row 的引用,而我们希望稍后使用。有很多解决方案。在这里,我们在 global namespace 中使用了一个全局变量和一个列表来访问它们。

【讨论】:

  • @PritishMair 如果您将其设置为正确答案,我将不胜感激。
猜你喜欢
  • 2023-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-25
  • 1970-01-01
  • 1970-01-01
  • 2010-11-30
  • 2017-02-09
相关资源
最近更新 更多