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
所有事件类型都在此处概述,您正在寻找<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)