Python 不使用lambda表达式在tkinter中切换帧

Python 不使用lambda表达式在tkinter中切换帧,python,user-interface,tkinter,Python,User Interface,Tkinter,有人能解释一下,在不使用lambda表达式的情况下,如何在tkinter中单击按钮来更改帧吗。 这是代码的一部分 button = tk.Button(self, text="Start", command=lambda: controller.show_frame(PageOne) 我的问题是,除了提出新的框架,我还想实现许多其他功能。堆栈溢出的所有答案都使用lambda表达式 。要发送给新函数的参数是什么,以便它可以切换帧以及根据需

有人能解释一下,在不使用lambda表达式的情况下,如何在tkinter中单击按钮来更改帧吗。 这是代码的一部分

    button = tk.Button(self, text="Start", 
                        command=lambda: controller.show_frame(PageOne)
我的问题是,除了提出新的框架,我还想实现许多其他功能。堆栈溢出的所有答案都使用lambda表达式
。要发送给新函数的参数是什么,以便它可以切换帧以及根据需要执行其他一些活动

您无需执行任何特殊操作。只需创建您自己的函数来做任何您想做的事情,并将其绑定到您的按钮上

class Something(...):
    def __init__(self, parent, controller):
        ...
        self.controller = controller
        ...
        button = tk.Button(self, text="Start", command=self.go_to_start)
        ...
    def go_to_start(self):
        ...
        self.controller.show_frame(PageOne)
        ...

要发送给新函数的参数是什么,以便它可以根据需要切换帧以及执行一些其他活动?
您到底想做什么?如果为函数/方法设置了所述函数/方法,则可以向该函数/方法传递任意数量的参数。在新函数中,我希望引发一个新框架,并从Entry对象获取文本。我应该将控制器和父对象作为参数传递给新函数吗?哪一个不起作用?您是否试图从新框架上的输入小部件中获取文本,或者此输入字段是否位于与当前框架不同的框架中?单击按钮后,当前框架中的输入小部件中的文本,应该提出一个新的框架我认为如果你在一个类中构建所有内容并将框架放在一个列表中,那么与之交互可能会更容易。在这里,self.controller给出错误,因为“某物”没有控制器member@SuhasBobby:您只需将控制器保存在
\uuuu init\uuu
中即可。您可以通过lambda传入控制器,但您明确表示不想使用lambda。这是一种键错误。我不想使用lambda,因为只能编写一行代码it@SuhasBobby将
command=self.printhashtag()
更改为
command=self.printhashtag
而不使用
()
。当您不使用lambda表达式时,如果在命令中使用
()
,则在程序初始化过程中创建按钮后,程序将立即调用该方法。@SuhasBobby您需要忽略命令中的
()
。传递参数还有其他方法,但如果只是使用命令调用函数/方法,则不能使用
()
,因为它将尝试运行它,而不是提供对函数/方法的引用。