如何解决它正在工作,但我不明白为什么关于回调的参数
它正在工作,但我不明白为什么。在找到有效的方法之前,我一直可以尝试,它取决于回调中隐藏的“默认”参数,但是我认为“事件”是唯一的隐藏参数。我也想通过“自我”课程。我希望tkinter类中的事件可以调用外部函数(在该类外部),并且希望将该事件和类(“ self”)作为参数传递。为此,我先调用内部函数,然后再调用外部函数。 令人困惑的一点是,对于绑定绑定的调用和按钮命令的调用,我必须做不同的操作。它可以工作并且可以实现我想要的功能,但是我也想了解正在发生的事情。我也想知道是否有更好的方法。以下代码都在该类之内。
self.B1 = Button(self.frame_controls,text = "Go",command=lambda: self.process_go_internal(self))
self.canvas.bind('<Configure>',self.process_configure_internal)
def process_go_internal(event,rt):
process_go_external(rt,event)
def process_configure_internal(self,event):
process_configure(self,event)
解决方法
嗯,不提供工作代码时很难看清自己在做什么。但是,我将提供一个示例,说明您如何才能完成我认为您想做的事情:
bind()
函数会生成一个事件,但是Button()
不会生成事件,因此您将必须对其进行相应的处理。我让他们在类中调用不同的方法。
在button_press()
方法中,我为event提供了默认值,因为Button没有传递任何事件。
关于传递对实例的引用,您可以像传递任何名称一样传递它。
from tkinter import *
root = Tk()
def external_function(instance,event):
print('external_function instance:',instance)
print('external_functionevent:',event)
print()
instance.do_it() # Try to call the Cheese instance
class Cheese():
def __init__(self):
root.bind('<Configure>',self.configure)
B1 = Button(root,text='Go',command=self.button_press)
B1.pack(padx=100,pady=20)
def configure(self,event):
print('<Configure>')
external_function(self,event) # Passing instance ref and event
def button_press(self,event=None):
print('Button press')
print()
external_function(self,event) # Passing instance ref and event
def do_it(self):
print("I'm doing it!")
print()
c = Cheese()
root.mainloop()
这有帮助吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。