[英]How to collect tkinter Entry information and enter into dictionary
我想從許多tkinter輸入框中獲取信息,然后將其放置在字典中以傳遞給其他函數。 我希望鍵是變量(輸入)名稱,值是存儲在輸入框中的文本。 我能夠收集所有信息,但是字典鍵不正確。 鍵引用了Entry,但是我希望鍵成為變量名,以便以后可以將其傳遞給正則表達式。 這是我到目前為止使用的代碼。
import tkinter as tk
class ExApp(tk.Tk):
def __init__(self, *args, **kwargs):
tk.Tk.__init__(self, *args, **kwargs)
# Build the container
container = tk.Frame(self)
container.pack(fill='both', expand=True)
container.grid_columnconfigure(0, weight=1)
container.grid_rowconfigure(0, weight=1)
self.frames = {}
frame = StartPage(container, self)
self.frames[StartPage] = frame
frame.grid(column = 0, row=0, sticky='nsew')
self.show_frame(StartPage)
def show_frame(self, cont):
frame = self.frames[cont]
frame.tkraise()
class StartPage(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
tlabel = tk.Label(self, text='This is just a test')
tlabel.pack()
pdc1 = tk.Entry(self)
pdc1.pack()
pdc2 = tk.Entry(self)
pdc2.pack()
pdc3 = tk.Entry(self)
pdc3.pack()
pdc4 = tk.Entry(self)
pdc4.pack()
self.entries = [pdc1, pdc2, pdc3, pdc4]
testbutton = tk.Button(self, text = 'test',
command= lambda: print(self.collect_entries(self.entries)))
testbutton.pack()
def collect_entries(self, list = []):
self.outputs = {}
for entry in list:
self.outputs[entry] = entry.get()
return self.outputs
app = ExApp()
app.mainloop()
這只是一個測試腳本,但我實際的腳本包含更多條目。 最后將大量變量傳遞給另一個函數,但我認為可以使用一個字典來實現。
先感謝您。
如果需要名稱,則必須將其存儲為字符串。 例如在元組列表中(名稱,條目)。 然后,您可以根據名稱和該名稱的條目內容創建字典。 通過dict理解,實際上是一個襯里:
class StartPage(tk.Frame):
def __init__(self, parent, _controller):
tk.Frame.__init__(self, parent)
tk.Label(self, text='This is just a test').pack()
self.entries = list()
for name in ['pdc1', 'pdc2', 'pdc3', 'pdc4']:
entry = tk.Entry(self)
entry.pack()
self.entries.append((name, entry))
tk.Button(
self,
text='test',
command=lambda: print(self.collect_entries())
).pack()
def collect_entries(self):
return {name: entry.get() for name, entry in self.entries}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.