如何在python中向函数传递参数

如何在python中向函数传递参数,python,tkinter,parameter-passing,Python,Tkinter,Parameter Passing,我编写了一个简单的程序,以便更好地理解“return”函数以及如何将值从一个函数传递到另一个函数。这个程序所做的就是将buttontwo=2的值传递给函数button\u one\u函数,因此如果先按下按钮2,那么按钮1什么也不做。我想我可以不用全局语句来完成这项工作-有没有一种不用全局语句来编写下面代码的方法?我尝试过将buttontwo的值放在button\u one\u函数的括号中,但这不起作用。谢谢你的提示 from tkinter import * my_window = Tk()

我编写了一个简单的程序,以便更好地理解“return”函数以及如何将值从一个函数传递到另一个函数。这个程序所做的就是将buttontwo=2的值传递给函数button\u one\u函数,因此如果先按下按钮2,那么按钮1什么也不做。我想我可以不用全局语句来完成这项工作-有没有一种不用全局语句来编写下面代码的方法?我尝试过将buttontwo的值放在button\u one\u函数的括号中,但这不起作用。谢谢你的提示

from tkinter import *

my_window = Tk()

my_frame = Frame(my_window, height=500, width=500, bd='4')

my_frame.grid(row=0, column=0)


def button_one_function():
    if button_two == 2:
        print('do nothing')
    else:
        label_one = Label(my_frame, text='label one')
        label_one.grid(row=1, column=0, sticky='n')


def button_two_function():
    global button_two
    button_two = 2
    label_two = Label(my_frame, text='label two')
    label_two.grid(row=1, column=1, sticky='n')
    return button_two


button_one = Button(my_frame, text='button1', command=button_one_function)
button_one.grid(row=0, column=0)

button_two = Button(my_frame, text='button2', command=button_two_function)
button_two.grid(row=0, column=1)

my_window.mainloop()

如果我理解正确,你会对这样的事情感兴趣:

from tkinter import *

root = Tk()

def click(a):
    print(a)

Button(root, text='1', command=lambda: click('1')).pack()
Button(root, text='2', command=lambda: click('2')).pack()

root.mainloop()
现在发生的事情是,我没有将完整的
单击
函数传递给按钮,而是传递一个所谓的lambda函数,它本质上是一个单行函数。示例:如果我执行了
p=lambda:print('Hi')
,那么每次执行
p()
时,我都会看到一个小的
Hi
弹出窗口。另外,如果我做了
k=lambda,b:a*b
,那么
k(4,5)
将返回“20”。关于lambdas的更多信息。
希望对你有帮助

您完全可以在没有全局变量的情况下完成此操作。您可以扩展tk.button类来保存变量,如
self.status=pressed

在课堂上有几种方法可以做到这一点。您可以创建一个或两个类。也许每个按钮都有子类

但是您可以在一个类中转储两个函数,并将
self
作为其第一个参数传递


每当我觉得需要一个全局变量时,我通常会创建一个类

原来的海报不是这个意思。。。这在他/她的代码中意味着什么这是否回答了你的问题?对于当前的设计,必须使用全局变量。或者你把代码放在一个类中,用实例变量代替。你能给我一个简单的例子说明它在一个类中是什么样子的吗?我以前从未使用过类(但前提是它只是对编码进行了一些小的更改)——如果需要做很多工作,我会看看谷歌。谢谢你,你已经接受了一个解决方案,我认为这不是一个解决方案。
from tkinter import *

root = Tk()

def click(a):
    print(a)

Button(root, text='1', command=lambda: click('1')).pack()
Button(root, text='2', command=lambda: click('2')).pack()

root.mainloop()