簡體   English   中英

如何收集tkinter條目信息並輸入字典

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM