You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

创建函数时触发TypeError:klik()缺少必需位置参数'j',求修复方法

解决TypeError: klik() missing 1 required positional argument: 'j'的问题

我来帮你拆解这个错误的根源,以及快速修复的方法:

错误原因

当你用Tkinter的canvas.bind('<ButtonPress-1>', klik)绑定点击事件时,Tkinter会自动把事件对象作为第一个参数传递给绑定的函数。但你的klik(h,j)函数定义要求传入两个参数,这就导致了参数不匹配——实际只传了1个事件参数,函数却需要2个,所以抛出了这个TypeError。

另外看你的代码逻辑,函数内部已经通过for h in range(0,100)和for j in range(0,100)重新定义了这两个变量,说明你本来就不需要从外部传入h和j,这两个参数完全是多余的。

修复步骤

  1. 调整klik函数的参数,只保留Tkinter自动传递的事件参数(可以用event作为参数名;如果不需要使用事件的具体属性,也可以用下划线_占位,表示这个参数只是用来接收但不用)。
  2. 移除函数定义里多余的h,j参数。

修改后的代码

def klik(event):  # 只保留事件参数
    global w,z
    for h in range(0,100):
        for j in range(0,100):
            if m[h][j]==0.0:
                f='white'
            else:
                f='black'
            canvas.create_rectangle(w,z,w+strana,z+strana, fill=f, outline="" )
            w+=strana
            z+=strana
    w=0

canvas.bind('<ButtonPress-1>', klik)

如果不需要使用事件对象的任何信息,也可以这样写(用下划线占位更直观):

def klik(_):  # 下划线表示这个参数不需要使用
    global w,z
    for h in range(0,100):
        for j in range(0,100):
            if m[h][j]==0.0:
                f='white'
            else:
                f='black'
            canvas.create_rectangle(w,z,w+strana,z+strana, fill=f, outline="" )
            w+=strana
            z+=strana
    w=0

canvas.bind('<ButtonPress-1>', klik)

额外优化提示

顺便提一句,你当前的循环逻辑可能会让矩形绘制位置不符合预期——每次内层循环j增加时,w和z同时累加,会导致矩形斜着排列。如果你的目标是绘制100x100的网格,应该在每一行结束后重置w,而不是只在最后重置:

def klik(event):
    global w,z
    for h in range(0,100):
        w = 0  # 每一行开始时重置横向位置
        for j in range(0,100):
            if m[h][j]==0.0:
                f='white'
            else:
                f='black'
            canvas.create_rectangle(w,z,w+strana,z+strana, fill=f, outline="" )
            w+=strana
        z+=strana  # 每一行结束后纵向位置下移
    z=0  # 所有行绘制完成后重置纵向位置

这样才能正确画出每行100个、共100行的规整网格。

内容的提问来源于stack exchange,提问作者user11574067

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 07:45:14