按下按钮上的多个命令

时间:2017-08-18 15:19:33

标签: python python-3.x button tkinter

我如何更改此代码,以便我也可以启动一个名为Drop_down_menu()

的函数
done_btn = Button(root, text = "Done", command = lambda: root.destroy())       
done_btn.pack()

我查看了之前的文章,这些文章说使用函数并在那里进行操作,但后来却说root没有定义。

4 个答案:

答案 0 :(得分:1)

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

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

done_btn = Button(root, text = "Done", command = lambda: myfunction(root))       
done_btn.pack()

有关如何在Tkinter here中使用callbacks的详细信息,这是一个很好的教程。以下是该教程中有关如何使用带参数的回调的示例:

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

希望这会有所帮助。

答案 1 :(得分:0)

尝试这个

SimpleCredStashClient.apply(
    kms,
    dynamo,
    DefaultAESEncryption$.MODULE$
);

希望这能回答你的问题

答案 2 :(得分:0)

您也可以以面向对象的方式执行此操作,这样可以通过让您避免使用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()

答案 3 :(得分:0)

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

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