gpt4 book ai didi

python - tkinter 中的命令和绑定(bind)有什么区别?

转载 作者:行者123 更新时间:2023-12-05 01:46:13 24 4
gpt4 key购买 nike

我试图让一个按钮在按下时打印一个字符串,在释放时打印另一个字符串。我知道 command 属性和 bind 方法,但我想知道是否可以仅使用属性来完成它,或者我是否必须使用方法。使用这段代码:

class motor:
def __init__(eleMesmo, eixo , valorZero):
eleMesmo.eixo = eixo
eleMesmo.zero = valorZero

def aumenta(self):
print(self.eixo + str(self.zero+5))
def diminui(self):
print(self.eixo + str(self.zero-5))
def para(self):
print(self.eixo + str(self.zero))

eixox = motor('x',90)
eixoy = motor('y',90)


class Interface:
def __init__(elemesmo, widget):
quadro = Frame(widget)
quadro.pack()
elemesmo.aumentarY = Button(quadro,text="Aumentar Y",height=10,width=20,command=eixoy.aumenta)
elemesmo.aumentarY.pack(side=TOP)
elemesmo.diminuirY = Button(quadro,text="Diminuir Y",height=10,width=20,command=eixoy.diminui)

当按下按钮 aumentarY 时,我可以为对象 eixo y 调用方法 aumenta。我想在释放按钮 aumentarY 时为对象 eixo y 调用方法 para。我该怎么做?

最佳答案

全部Event types are outlined here ,您正在寻找<Button-1> (单击按钮 1(如果您是右撇子,请单击鼠标左键))和 <ButtonRelease-1> (释放鼠标按钮 1(如果您是右撇子,则释放鼠标左键))。

注意我不会使用 command如果你绑定(bind)这两个。

 elemesmo.aumentarY = Button(quadro,text="Aumentar Y",height=10,width=20)
elemesmo.aumentarY.bind("<Button-1>",eixoy.aumenta)
elemesmo.aumentarY.bind("<ButtonRelease-1>",eixoy.para)

但是您必须知道,在使用 bind 时使用 Event 调用回调对象,如果你不需要它,你可以在回调中添加一个可选的和未使用的参数:

 def aumenta(self, event=None):
print(self.eixo + str(self.zero+5))
def diminui(self, event=None):
print(self.eixo + str(self.zero-5))
def para(self, event=None):
print(self.eixo + str(self.zero))

关于python - tkinter 中的命令和绑定(bind)有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36726716/

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