tkinter 中的命令和绑定有什么区别?

Gab*_*ado 1 python methods tkinter button

我试图让按钮在按下时打印一个字符串,并在释放时打印另一个。我知道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)
Run Code Online (Sandbox Code Playgroud)

我可以在按下按钮时调用aumenta对象的方法。我想在释放按钮时调用对象的方法。我该怎么做?eixo yaumentarYparaeixo yaumentarY

Tad*_*sen 5

所有事件类型都在此处概述,您正在寻找<Button-1>(点击按钮 1(如果您是右手使用鼠标左键))和<ButtonRelease-1>(释放鼠标按钮 1(如果您是右手使用左键))。

请注意,command如果您同时绑定这两个,我将不会使用。

 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)
Run Code Online (Sandbox Code Playgroud)

但是你必须知道,当使用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))
Run Code Online (Sandbox Code Playgroud)