在python tkin中使用和事件传递变量时出现问题

2024-06-02 06:47:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用tkinter编写一个简单的3d模拟器,在通过绑定到事件的函数传递参数时遇到了一个问题。你知道吗

我的职能是

def left(event):


    cam1 = 0
    cam2 = 0
    def render( cam1, cam2):
        w.delete("all")
        cam1 = cam1 + 5
        cam2 = cam2 + 2
        lol = 0
        w.create_rectangle(10+cam1,10+cam1,190+cam1,190+cam1)
        w.create_rectangle(40+cam2,40+cam2,160+cam2,160+cam2)
        w.create_line(10+cam1,10+cam1,40+cam2,40+cam2)
        w.create_line(40+cam2,160+cam2,10+cam1,190+cam1)
        w.create_line(160+cam2,160+cam2,190+cam1,190+cam1)
        w.create_line(190+cam1,10+cam1,160+cam2,40+cam2)
    w.after(10,render(cam1,cam2))

我希望每次调用函数时,cam1和cam2不能为0,但它不会让我在事件中传递更多参数,我使用

w.bind("<Right>", right)

把它绑起来


Tags: 函数event参数tkinterdefcreateline事件
1条回答
网友
1楼 · 发布于 2024-06-02 06:47:59

after调用不正确。你必须给它一个函数的引用。可以提供其他参数。在您的情况下:

w.after910, render, cam1, cam2)

至于绑定,最常见的解决方案是使用lambdafunctools.partial。例如:

w.bind("<Right>", lambda event, arg1="something", arg2="something else": right(arg1, arg2))

这个问题的变体在stackoverflow上被问了几十次。请尝试在该站点中搜索[tkinter] bind argument。你的问题可能应该标记为一个重复的问题,但很难知道哪个问题是最好的原始问题。你知道吗

相关问题 更多 >