Python ttk.Entry未根据textvariable设置默认值

Python ttk.Entry未根据textvariable设置默认值,python,tkinter,ttk,Python,Tkinter,Ttk,我已经用tkinter和ttk创建了下面的窗口,但是我不能强制ttk.Entry字段跟随默认值的textvariable,它们只是一直显示为空白。奇怪的是,有时当我真的导致窗口中的其他地方发生异常时,它们突然起作用 class PopUpEdit: def __init__(self, idx): self.idx = idx self.data = get_single(self.idx) self.have = tk.StringVa

我已经用tkinter和ttk创建了下面的窗口,但是我不能强制ttk.Entry字段跟随默认值的textvariable,它们只是一直显示为空白。奇怪的是,有时当我真的导致窗口中的其他地方发生异常时,它们突然起作用

class PopUpEdit:
    def __init__(self, idx):
        self.idx = idx
        self.data = get_single(self.idx)

        self.have = tk.StringVar(root)
        self.site = tk.StringVar(root)
        self.title = tk.StringVar(root)
        self.tags = tk.StringVar(root)

        self._setup_vars()
        self._setup_window()

    def _setup_window(self):
        window = tk.Toplevel(root)
        window.geometry('400x600')
        pprint.pprint(self.data)
        ttk.Label(window, text='Site').grid(row=2, column=1, pady=10, padx=10)
        ttk.Entry(window, textvariable=self.site, width=40).grid(row=2, column=2, sticky='e', pady=10, padx=10)
        ttk.Label(window, text='Title').grid(row=3, column=1, pady=10, padx=10)
        ttk.Entry(window, textvariable=self.title, width=40).grid(row=3, column=2, sticky='e', pady=10, padx=10)
        ttk.Label(window, text=self.data['id']).grid(row=4, column=1, pady=10, padx=10)

    def _setup_vars(self):
        self.title.set(self.data['title'])
        self.site.set(self.data['site'])
        self.tags.set(self.data['tags'])

您不会显示
get\u single(self.idx)
的功能。您是否验证了它返回的是您认为它返回的内容?是的,它工作正常(返回带有键title、站点标记和idx的dict),当我执行self.title.get()时,它也会返回正确的值