最近我学习了如何使用python3中的tkinter模块来创建GUI。不幸的是,我陷入了一个我的入门小部件无法更新的问题。为了理解这个问题,我编写了一个简短的测试用例,用字符串“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')
被卡在某个队列中,并且在编译窗口时丢失了一个命令。有什么建议吗?你知道吗
ttk小部件对垃圾收集器特别敏感。使
start_time
成为实例变量而不是局部变量。他说相关问题 更多 >
编程相关推荐