Tkinter 中的命令

commands in Tkinter

我有以下代码,但它不起作用?

您可以使用 lambda 函数尝试类似的操作

login_button = Button(root, text="Click here to enter data", command=lambda:[main_menu(),apending_to_text_file()])

这里有几个问题。 and 是一个逻辑与,所以你不能那样使用它。

其次,您使用括号调用第二个函数,而不是传递函数本身。这意味着您将函数的 return 值作为命令传递。所以如果我们有一个函数

def my_func():
    return 'hello'

传入 command = my_func 将使按钮调用 my_func()。如果您尝试传入 command = my_func(),您最终会传入没有意义的字符串 hello

第三,解决方案是将两个函数包装在一个单独的函数中。要内联执行此操作,您可以使用调用这两个函数的 lambda 函数(在这种情况下,您需要括号)。或者您可以单独定义此函数并调用您想要的两个函数。

示例如下:

def on_button_submit():
    main_menu()
    appending_to_text_file()

那么您可以使用此 on_button_submit 作为按钮的命令。

或者使用 lambda 函数。以下是 lambda 函数如何工作的简单示例:

def func1():
  print('in func1')

def func2():
  print('in func2')

x = lambda : (func1(), func2())
x()

因此您可以使用以下命令作为按钮命令:

lambda : (main_menu(), appending_to_text_file())

该参数不接受两个函数。 解决此问题的最佳方法是创建一个执行所有其他功能的函数。

def main_menu():
    pass


def apending_to_text_file():
    pass


def commands():
    main_menu()
    apending_to_text_file()


login_button = Button(
    root, text="Click here to enter data",
    command=commands
)