Aus*_*law 3 python tkinter typeerror
所以我写了一个非常简单的东西,它让我试图弄清楚为什么它不起作用。当你点击它时,它会打印一条语句。
因此,对于第一个示例,我有一个按钮并将功能printName1直接分配给它,效果非常好。
然后接下来就是使用.bind()函数绑定它。因此,在这种情况下,我们只有一个框架,可以根据您按下的按钮打印出某些内容。但不幸的是,每当我使用绑定时,它都会抛出上面显示的错误。tkinter\__init__.py错误的引用,所以它不是直接在我的代码中的东西,但也许需要以不同的方式完成?谢谢你们。
from tkinter import *
root = Tk()
def printName1():
print('Jack')
def printName2():
print('John')
def printName3():
print('Jill')
frame = Frame(root, width=300, height=250)
frame.bind("<Button-1>", printName1)
frame.bind("<Button-2>", printName2)
frame.bind("<Button-3>", printName3)
frame.pack()
root.mainloop()
Run Code Online (Sandbox Code Playgroud)
编辑:错误令人困惑,因为它看起来应该是 0 时有一个额外的参数。但实际上我需要向函数添加一个参数,这就是事件。所以它应该是 def printName1(event) 等等。只是想我会让你们知道什么对我有用,以防有人偶然发现这个。
如果您参考有关 tkinter events 和 bindings的文档,您将看到当触发事件时,关联的事件对象将作为第一个(也是唯一的)参数传递给有界函数(printName1在您的情况下是和朋友)。
所以你需要做的是修改这些printName*函数以接受事件参数。
def printName1(event):
print('Jack')
Run Code Online (Sandbox Code Playgroud)
那么您想要实现的目标应该会起作用。
当然,您可以event按照@TigerhawkT3 的建议将参数设为可选。