tkinter不会用函数更新输入框

2024-04-26 05:22:20 发布

您现在位置:Python中文网/ 问答频道 /正文

最近我学习了如何使用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')被卡在某个队列中,并且在编译窗口时丢失了一个命令。有什么建议吗?你知道吗


Tags: selfhellotimemain部件rootframestart

热门问题