代码之家  ›  专栏  ›  技术社区  ›  Macronaute

使用Python在for循环中为Tkinter框架分配特定名称

  •  0
  • Macronaute  · 技术社区  · 5 月前

    我是Python和GUI开发的新手。

    我试着在橱窗里展示一周的计划。我已经准备了一份日期列表,我想循环浏览,为每一天创建一个框架:

    Frames for the week

    这部分没问题,我的问题是指定框架的名称,如下所示:Monday_frame;星期二_框架。。。

    我可以直接在7帧的代码中完成,但我想了解在for循环中完成的可能性。

    这是我的试用版,但我不明白如何添加“day”值来替换“day_frame”中的“day”。 (我使用CustomTkinter而不是Tkinter作为接口,这就是为什么下面的代码中有“CTk”而不是“Tk”。)

    week = ['Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi','Dimanche']
    
    for day in week:
        day_frame = CTkFrame(master=week_frame, bg_color=window_color,border_color='white',border_width=2,fg_color=window_color)
        day_frame.pack(side=LEFT, fill=Y, expand=YES) 
    

    编辑:

    帧没有动态命名,使用建议的字典,以天为键,以帧为值。请参阅下面的代码和使用示例: (由于其他变化,图片略有差异。请参阅第二天的白色前景作为字典使用的示例。)

        week = ['Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi','Dimanche']
    
    frames = {}
    for day in week:
        day_frame = CTkFrame(master=week_frame, bg_color=window_color,border_color='white',border_width=2,fg_color=window_color)
        day_frame.pack(side=LEFT, fill=Y, expand=YES)
        frames[day] = day_frame
    
    frames['Mardi'].configure(fg_color='white')
    

    Frames for the week after edit

    1 回复  |  直到 5 月前
        1
  •  2
  •   AKX Bryan Oakley    5 月前

    不要尝试动态创建变量名。使用字典:

    frames = {}
    for day in week:
        day_frame = CTkFrame(master=week_frame, bg_color=window_color,border_color='white',border_width=2,fg_color=window_color)
        day_frame.pack(side=LEFT, fill=Y, expand=YES) 
        frames[day] = day_frame
    

    有了它,你以后可以使用类似的东西 frames["Sunday"] 以访问该帧。