可以通过单击按钮创建列表框
Possible to create a listbox by click on a button
我将创建多个输入框供用户输入,然后单击一个按钮将所有条目值存储到一个数组中,条目将被清除,然后存储的用户可以存储另一组条目值。
所以这个按钮有两个功能:
1:将值存储到我的数组中
2:使用第一个数组
中的值创建第一个列表框
结果,我可以得到多组数组,每组数组都有自己的列表框。
我没有找到这方面的相关指南,或者'dynamic create listbox'没有帮助我。如果可行,可以分享示例。
欢迎来到 Stack Overflow 社区。
据我了解你的问题,我已经试过了
from tkinter import *
root = Tk()
def saveClear():
global entry_list
listbox = Listbox(root)
for entry in entry_list:
listbox.insert(END, entry.get())
entry.set('')
listbox.pack(padx = 10, pady = 10)
entry_list = []
for _ in range(5):
ent_var = StringVar()
ent = Entry(root, textvariable = ent_var)
entry_list.append(ent_var)
ent.pack(padx = 10, pady = 10)
but = Button(root, text = 'Save and Clear', command = saveClear)
but.pack(padx = 10, pady = 10)
root.mainloop()
更新: 为了从 ListBox()
中获取值,您需要使用 listvariable
属性并将目标设为 Variable()
将值存储为元组并使用 .get()
方法获取相同的值。
这是更新后的代码:
from tkinter import *
root = Tk()
def retrieve(index):
global values
if index == 'all':
for value in values:
print(value.get())
else:
print(values[index].get())
values = []
def saveClear():
global entry_list, values
list_var = Variable()
listbox = Listbox(root, listvariable = list_var)
for entry in entry_list:
listbox.insert(END, entry.get())
entry.set('')
values.append(list_var)
listbox.pack(padx = 10, pady = 10)
entry_list = []
for _ in range(5):
ent_var = StringVar()
ent = Entry(root, textvariable = ent_var)
entry_list.append(ent_var)
ent.pack(padx = 10, pady = 10)
but = Button(root, text = 'Save and Clear', command = saveClear)
but.pack(padx = 10, pady = 10)
root.mainloop()
retrieve('all') #OR specify the index that you wish to retrieve
这里的retrieve()
是在mainloop()
结束后调用的,即在主循环结束后执行,但是你可以根据需要在代码中使用这个函数。
希望对您有所帮助。干杯!
我将创建多个输入框供用户输入,然后单击一个按钮将所有条目值存储到一个数组中,条目将被清除,然后存储的用户可以存储另一组条目值。
所以这个按钮有两个功能: 1:将值存储到我的数组中 2:使用第一个数组
中的值创建第一个列表框结果,我可以得到多组数组,每组数组都有自己的列表框。
我没有找到这方面的相关指南,或者'dynamic create listbox'没有帮助我。如果可行,可以分享示例。
欢迎来到 Stack Overflow 社区。
据我了解你的问题,我已经试过了
from tkinter import *
root = Tk()
def saveClear():
global entry_list
listbox = Listbox(root)
for entry in entry_list:
listbox.insert(END, entry.get())
entry.set('')
listbox.pack(padx = 10, pady = 10)
entry_list = []
for _ in range(5):
ent_var = StringVar()
ent = Entry(root, textvariable = ent_var)
entry_list.append(ent_var)
ent.pack(padx = 10, pady = 10)
but = Button(root, text = 'Save and Clear', command = saveClear)
but.pack(padx = 10, pady = 10)
root.mainloop()
更新: 为了从 ListBox()
中获取值,您需要使用 listvariable
属性并将目标设为 Variable()
将值存储为元组并使用 .get()
方法获取相同的值。
这是更新后的代码:
from tkinter import *
root = Tk()
def retrieve(index):
global values
if index == 'all':
for value in values:
print(value.get())
else:
print(values[index].get())
values = []
def saveClear():
global entry_list, values
list_var = Variable()
listbox = Listbox(root, listvariable = list_var)
for entry in entry_list:
listbox.insert(END, entry.get())
entry.set('')
values.append(list_var)
listbox.pack(padx = 10, pady = 10)
entry_list = []
for _ in range(5):
ent_var = StringVar()
ent = Entry(root, textvariable = ent_var)
entry_list.append(ent_var)
ent.pack(padx = 10, pady = 10)
but = Button(root, text = 'Save and Clear', command = saveClear)
but.pack(padx = 10, pady = 10)
root.mainloop()
retrieve('all') #OR specify the index that you wish to retrieve
这里的retrieve()
是在mainloop()
结束后调用的,即在主循环结束后执行,但是你可以根据需要在代码中使用这个函数。
希望对您有所帮助。干杯!