Python 按钮按下时的多个命令

Python 按钮按下时的多个命令,python,python-3.x,button,tkinter,Python,Python 3.x,Button,Tkinter,如何更改此代码,使其也可以启动名为Drop\u down\u menu() 我看过以前的文章,上面说使用函数并在那里进行操作,但它说根没有定义。您需要创建一个函数并将根作为变量传递给它: def myfunction(root): root.destroy() Drop_down_menu() done_btn = Button(root, text = "Done", command = lambda: myfunction(root)) done_btn.pa

如何更改此代码,使其也可以启动名为
Drop\u down\u menu()


我看过以前的文章,上面说使用函数并在那里进行操作,但它说根没有定义。

您需要创建一个函数并将
根作为变量传递给它:

def myfunction(root):
    root.destroy()
    Drop_down_menu()

done_btn = Button(root, text = "Done", command = lambda: myfunction(root))       
done_btn.pack()
有关如何在Tkinter的好教程中使用
回调的详细信息,请参阅。下面是该教程中关于如何使用带参数的回调的示例:

def callback(number):
    print "button", number

Button(text="one",   command=lambda: callback(1)).pack()
Button(text="two",   command=lambda: callback(2)).pack()
Button(text="three", command=lambda: callback(3)).pack()  
希望这有帮助

试试这个

done_btn = Button(root, text = "Done", command = lambda: [root.destroy(),
                                                          Drop_down_menu()])       
done_btn.pack()

希望这能回答您的问题

您也可以以面向对象的方式进行此操作,这样可以通过避免使用
lambda来清理代码:

from tkinter import *

class App:
    def __init__(self, root):
        self.root = root
        self.btn = Button(self.root, text="Done", command=self.command)
        self.btn.pack()
    def command(self):
        self.root.destroy()
        print("Output")

root = Tk()
app = App(root)
root.mainloop()

对于调用多个函数或命令,您需要像这样使用lambda:

test_button = Button(text="your_text_button", command=lambda:[function1(),function2()])
text_button.pack()

你说的“以前的文章”是什么?这是使用模块TK的代码?请更详细地显示您的代码以及由此产生的错误消息。出现此错误:TypeError:()缺少1个必需的位置参数:“root”@user8469209请尝试
按钮(root,text=“Done”,command=lambda:myfunction(root))
,因此
命令
是一个没有参数的函数。@AMagoon将调用
myfunction(root)
立即,而不是按按钮
test_button = Button(text="your_text_button", command=lambda:[function1(),function2()])
text_button.pack()