Python:函数需要 1 个位置参数,但给出了 2 个位置参数,怎么办?

2024-02-26

我正在用 Tk 用 python 创建一个数独游戏。

我收到关于按钮按键功能的错误

from random import randint
from tkinter import *

class sudoku:
    global root,result,lb
    def __init__(self):
        self.aleatoriedade()
        for k in range(9):
            j=randint(0,80)
            x=j//9
            y=j-(x*9)
            lb[x][y]['text']=result[x][y]
        lb[0][0].bind('<KeyPress-2>',self.kk)
        #setted this for test
        root.mainloop()

    def kk(self):
        lb[0][0]['text']='2'


    def aleatoriedade(self):
        for i in range(9):
            var=0
            while var in result[0]:
                var=randint(1,9)
            result[0][i]=var

        for i in range(1,9):
            for j in range(9):
                result[i][j]=result[0][field[i][j]-1]

#MAIN()
n = 3
field = [[(i*n + i//n + j) % (n*n) + 1 for j in range(9)]for i in range(9)] 
result = [[None for i in range(9)]for i in range(9)]
lb=[[None for i in range(9)]for i in range(9)]
x=0
y=0
root=Tk()

for i in range(9):
    for j in range(9):
        lb[i][j]=Button(root,font=("Verdana",'13',"bold"),bd=1,height=3,width=6)
        if (i in (0,1,2,6,7,8) and j in (0,1,2,6,7,8))or(i in (3,4,5) and j in (3,4,5)):
            lb[i][j]['bg']='white'
        lb[i][j].grid(row=i,column=j)
janela=sudoku()

这个错误/异常在lb[0][0].bind('<KeyPress-2>',self.kk)

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Python33\lib\tkinter\__init__.py", line 1489, in __call__
    return self.func(*args)
TypeError: kk() takes 1 positional argument but 2 were given

我不介意错误在哪里。我已将 self 包含在我的函数中


我看到这个问题已经得到解答,但我有一种我真正喜欢的方法,并且您和其他人可能会欣赏。

假设你的方法 kk 在多个地方使用,并且你不想发送一些随机变量来占据如下所示的“another_parameter”位置(根据 Christian 的响应进行工作),

def kk(self, another_parameter):

就我个人而言,我认为参数列表应该只包含他们需要的内容。因此,只要您不需要 bind() 函数发送的“another_parameter”变量,我建议通过执行以下操作来使用 Lambda:

lb[0][0].bind('<KeyPress-2>',lambda e:self.kk())

我认为你现在需要 kk 后面的两个括号,因为 lambda 实际上将使用它的参数运行该函数(在你的情况下,如果你删除我所说的那个,就不会有)。 lambda 为我们做的就是捕获从 bind 函数抛出给 kk 的参数(也就是 lambda 后面的“e”,它代表参数)。现在,我们的参数列表中不需要它,我们可以将 kk 定义恢复为

def kk(self):

我开始使用 Christian 的方法(有效!),但我不喜欢额外的变量。显然这两种方法都有效,但我认为这个方法很有帮助,特别是如果在绑定中调用的函数多次使用并且不一定由绑定调用使用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python:函数需要 1 个位置参数,但给出了 2 个位置参数,怎么办? 的相关文章

随机推荐

  • 连接到 LAN 时无法运行 selenium 脚本

    连接到 LAN 时无法运行 selenium 脚本 但连接到 WIFI 时它可以正常工作 我将所有代理设置保持不变 下面是代码 String exePath usr local bin chromedriver System setProp
  • 将选定的数据从第 1 帧中的 jtable 复制到第 2 帧中的另一个表

    我在frame1中有一个JTable2 在frame2中有一个JTable1 我想将选定的数据从 table2 复制并发送到 table1 我该怎么做 private void jButton3MouseClicked java awt e
  • SSRS 2008:如何在新页面上重复表格标题的一行

    我有一个包含 3 行标题的表格 我需要在新页面上重复第二行 除了第一页之外 页面中不需要第一行和第三行 如果我仅在第二行中设置属性 RepeatOnNewPage SSRS 将显示错误 TablixMember 必须具有与动态 Tablix
  • css动画持久结束状态

    我有一个 div 元素 它充当我的网页的全局容器 我在其中也有一个 div 元素 我将其用作窗帘 即当它被激活时 它会在黑暗的半透明层中覆盖整个页面 就像灯箱一样 因此该页面基本上已停用 并且可以在顶部显示警告对话框或图片框等 我可以使用j
  • 将特定的MDC字段附加到logstash日志中

    我正在尝试将自定义字段添加到 logback spring xml 中的 Logstash Appender 中 如下所示
  • Mongoose 填充包含 ref 的对象数组

    我有一个带有数组的猫鼬模式lists由对另一个集合的引用和嵌套的数字数组组成的对象 var Schema exports mongoose schema mongoose require mongoose Schema mongoose S
  • 构造函数注入——我们也注入工厂吗?

    听完后整洁代码讲座 https www youtube com playlist list PL693EFD059797C21E 我开始明白我们应该使用工厂来组合对象 因此 举例来说 如果House has a Door and a Doo
  • Camel 中的无限循环 - Rabbitmq

    我有一个小型服务器路由 它从queue in 获取消息并放入queue out 当我输入一条消息时queue in 服务器无限循环运行 我想知道我在配置方面缺少什么 这看起来是一条非常简单的路线 小服务器路由
  • IntelliJ 找不到 Scanner 类 [重复]

    这个问题在这里已经有答案了 我正在使用 Intellij IDEA 这是我的代码 public static void main String args java util Scanner scanner new java util Sca
  • 如何在Python中使用多线程时获得更快的速度

    现在我正在研究如何尽快从网站获取数据 为了获得更快的速度 我正在考虑使用多线程 这是我用来测试多线程和简单帖子之间差异的代码 import threading import time import urllib import urllib2
  • 如何在 Firefox 3.0 的 Javascript 中调用 Web 服务

    我在使用 Firefox 调用 Net Web 服务时遇到问题 客户 一个简单的例子对我来说就足够了 服务器端代码是这样的 WebService Namespace http tempuri org WebServiceBinding Co
  • 下一个可用记录 ID

    user User new user id返回零 但我需要在保存之前知道它 是否可以 是的你可以 我有同样的问题并调查了文档 能否解决这个问题其实和你的数据库类型有很大关系 Oracle and PostgreSQL确实有有用的功能可以轻松
  • RSA-OAEP SHA-512 加密/解密从 Javascriptwebcrypt api 到 PHP openssl?

    我一直忙于尝试使用 webcrypto api 和使用 openssl 的 PHP 服务器在浏览器客户端之间建立安全交换 我已经尽可能地分解了 事情 我编写了一些 javascript 来生成密钥对 打印出私有值和公共值 加密一个简单的字符
  • 过滤所有查询(试图实现软删除)

    我正在尝试在 EF Core 2 0 中实现软删除行为 public interface ISoftDeleteModel bool IsDeleted get set 创建正确的列和软删除工作正常 但从 DbContext 过滤实体则不然
  • 为什么从 iPhone 模拟器发送文件到 watchOS2 模拟器不起作用?

    我试图将数据库从 iOS 9 iPhone 复制到 watchOS 2 Apple Watch 两个模拟器 但什么也没有 找不到文件 到处搜查 我想在从 iPhone 输入应用程序到 Apple Watch 时传输数据库 即使仅 iPhon
  • 如何设置目录分隔符以匹配操作系统?

    我正在编写一个 qt 应用程序 目标是可移植到 3 个主要操作系统 我正在使用 QFileDialog 选择一个文件夹 然后将其添加到 QListWidget 中 然而 即使我在 Windows 上 文件夹名称也会返回为 E media 我
  • Java Toolkit 屏幕分辨率降低

    我正在使用 java 来获取屏幕的尺寸和分辨率 当我运行以下代码时 我得到以下输出 Toolkit toolkit Toolkit getDefaultToolkit Dimension dim toolkit getScreenSize
  • 在 ubuntu 上的 R 中使用 cairo 设备时出错

    我正在开罗设备上工作 我正在生成 cairo pdf 并收到如下所示的错误消息 cairo pdf DATA Warning messages 1 In cairo pdf DATA unable to load shared object
  • 同时显示同一文档的多个视图

    如何说服 MFC 文档 视图体系结构让我同时显示同一文档的两个不同视图 例如 说我的CDocument子类代表某种描述的档案 我想要一个用户界面 其中该存档中的所有条目的名称都显示在CListView子类显示在左侧窗格中 而当前所选条目的详
  • Python:函数需要 1 个位置参数,但给出了 2 个位置参数,怎么办?

    我正在用 Tk 用 python 创建一个数独游戏 我收到关于按钮按键功能的错误 from random import randint from tkinter import class sudoku global root result