gpt4 book ai didi

Python tkinter 按钮绑定(bind)

转载 作者:行者123 更新时间:2023-12-01 05:56:48 26 4
gpt4 key购买 nike

class simpleapp_tk(tkinter.Tk):
def __init__(self,parent):
tkinter.Tk.__init__(self,parent)
self.parent = parent
self.initialize()



def initialize(self):
self.grid()
self.ZOOMIN = tkinter.Button(self,text="ZOOM IN")
self.ZOOMIN.grid(column=1,row=6)
self.ZOOMIN.bind("<Button-1>",self.bzoomin())
self.ZOOMIN.bind("<ButtonRelease-1>", self.brzoomin())

self.pollvar=0


def poll(self):
if self.pollvar==1:
self.ZOOMIN.after(300,self.poll())
self.OnZOOMINClick()


def brzoomin(self,event):
self.pollvar=0
def bzoomin(self,event):
self.pollvar=1
self.poll


def OnZOOMINClick(self):
....code


if __name__ == "__main__":
app = simpleapp_tk(None)
app.title('CAMERA CONTROLL v1')

app.mainloop()

我正在尝试创建一个在缩放按钮上按下 mousebutton-1 时重复调用的函数。这应该通过轮询来实现。单击按钮时,应调用 poll 函数。轮询应该持续运行,直到 mousebutton-1 被释放。但问题是按下按钮时什么也没有发生。

修改了指出的错误。但是代码仍然存在一些问题,因为窗口本身不再显示,并且由于“self.ZOOMIN.after(300,self.poll())”行,代码进入无限循环。 (这只是我的代码的一部分)

最佳答案

在Python中,您需要通过使用括号传递一系列参数来实际调用方法/函数。如果函数/方法不接受参数,则仍然需要空括号。换句话说,您想要:

self.poll()

self.OnZOOMINClick()
self.grid()

而不是self.pollself.OnZOOMINClickself.grid等。这是因为在python中,函数和方法是对象。它们可以像其他任何东西一样传递给函数或绑定(bind)到局部变量。

这里可能还有其他错误,但这些错误立即就很突出(如果您显示所有代码,您的 .grid 方法中的行和列似乎也有点奇怪。)另一个突出的错误是 OnZOOMINClick 的定义可能应该是 def OnZOOMINClick(self) .

<小时/>

另请注意,self.pollvar = int()self.pollvar = 0 执行完全相同的操作,您只需要这两个语句之一(我会更喜欢后者)。

关于Python tkinter 按钮绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12144035/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com