我已经用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'])