在tkinter中切换帧时遇到麻烦

时间:2019-08-25 15:17:51

标签: python tkinter

我无法理解如何在tkinter中切换帧。

我使用的代码在Internet上已经变得非常流行,它通过将帧堆叠在另一个之上然后调用它们来切换帧。我无法理解几行代码(带有***的代码)

import tkinter as tk
class SampleApp(tk.Tk):
    def __init__(self, *args, **kwargs):
        tk.Tk.__init__ (self, *args, **kwargs)
        container=tk.Frame(self)
        container.pack(side="top", fill="both", expand=True)
        self.frames={}
        for F in (a, b, c):***
            page_name=F.__name__***
            frame=F(parent=container, controller=self)
            self.frames[page_name]=frame
            frame.grid(row=0, column=0, sticky="nsew")
        self.show_frame("a")
    def show_frame(self, page_name):
        frame=self.frames[page_name]
        frame.tkraise()

所以我有2个问题,第一个是为什么在for循环中a,b,c像变量那样写,而不像字符串那样写(当我要显示框架a时,我像字符串一样放置“ a” )。其次,__name__在这种情况下会做什么,有什么必要。

1 个答案:

答案 0 :(得分:1)

httpc.request是类,a, b, c为您提供类名作为字符串-从而创建字典

__name__

self.frames = { "a": a(), "b": b(), "c": c() }

然后"class_name_as_string": instance_of_class使用show_frame("a")来获取"class_name_as_string"并显示它。


您可以跳过instance_of_class,然后获得

__name__

使用 self.frames = {a: a(), b: b(), c: c()} ,则必须使用class: instance_of_class中的类