最近,我学习了如何使用Python 3中的tkinter模块创建GUI。不幸的是,我已经陷入了一个问题,即我的Entry小部件不会更新。为了理解这个问题,我写了一个简短的测试用例,用一个字符串' hello'填充Entry小部件。
class SettingsWindow():
def __init__(self):
self.root = tk.Tk()
main_frame = ttk.Frame(self.root, padding=(15, 15, 15, 15))
main_frame.grid()
start_time = tk.StringVar()
start_time_ent = ttk.Entry(main_frame, textvariable=start_time, width=5)
start_time.set('hello')
start_time_ent.grid()
main_frame.mainloop()
if __name__ == '__main__':
app = SettingsWindow()
当我尝试按方法组织我的工作时出现问题:
class SettingsWindow():
def __init__(self):
self.root = tk.Tk()
main_frame = ttk.Frame(self.root, padding=(15, 15, 15, 15))
main_frame.grid()
self.general_settings(main_frame, parent_column=1, parent_row=2)
main_frame.mainloop()
def general_settings(self, parent_frame, parent_column=0, parent_row=0):
start_time = tk.StringVar()
start_time_ent = ttk.Entry(parent_frame, textvariable=start_time, width=5)
start_time.set('hello')
start_time_ent.grid()
if __name__ == '__main__':
app = SettingsWindow()
当我运行第二个版本的代码时,窗口会加载一个空的Entry小部件。我唯一猜测为什么会发生这种情况是start_time.set('hello')
卡在某个队列中,我在编译窗口时错过了一个命令。有什么建议吗?
答案 0 :(得分:0)
ttk小部件对垃圾收集器特别敏感。使airodump-ng
成为实例变量而不是局部变量。