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
)
我有以下代码,但它不起作用?
您可以使用 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
)