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()