Tkinter,用参数调用函数

时间:2015-09-12 13:54:54

标签: python function button tkinter frame

我最近完成了一个简单的命令行奥赛罗游戏,现在我正在尝试为它创建一个GUI。我的想法是,我会在一个8乘8的网格中按下一个框架,然后用框架坐标调用我的place_tile函数(方法)。我已经能够调用需要带按钮参数的函数,但是在框架方面我遇到了问题。有没有人知道我做错了什么,或者可能是我做的更好的方法?

有效的示例代码:

json.loads()

我想做的是从背景框架中调用类似hello函数的内容,谢谢。

1 个答案:

答案 0 :(得分:1)

您可以使用lambda函数的默认参数,例如 -

def dummy(frameobj):
    pass

background = Frame(root, height=100, width=100)
background.bind("<Button-1>", bye)
button = Button(root, text="Bye", command=lambda frameobj=background:hello(frameobj))

当调用lambda时,将调用它而不使用任何参数,因此将使用指定的默认值。

如果要将参数传递给bind()中使用的函数,则还需要包含由tkinter自动传递的event参数。示例 -

def bye(event, frameobj):
    print("Bye")

background = Frame(root, height=100, width=100)
background.bind("<Button-1>", lambda event, frameobh=background: bye(event,frameobj))

但是你想要的只是调用Frame方法的bye()对象,你可以使用tkinter - event.widget传递的事件变量轻松获得它。示例 -

def bye(event):
    frameobj = event.widget
    print("Bye")

background = Frame(root, height=100, width=100)
background.bind("<Button-1>", bye)