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

2024-10-01 11:30:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着让一个按钮按下时打印一个字符串,释放时再打印一个。我知道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。我怎么做?在


Tags: 方法selfdef按钮commandprintzerostr
2条回答

所有Event types are outlined here,您正在寻找<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)

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

^{pr2}$

使用Python上的tkinter模块,command.bind方法为按钮添加生命和功能。在

命令参数

tkinter.Button(frame, text="Exit", fg="green", bg="pink", command=master.destroy)

或者点击“我们将如何销毁”按钮上面的任何一个按钮。尝试使用选项卡键并按空格键。你会注意到按钮会工作的。 如果你不想要呢? 如果您严格要求用户使用鼠标左键单击它呢? 注意,您可以将一个简单的零参数方法传递给命令参数,该参数可能包含也可能不包含任何事件对象。在

绑定方法

bind方法用于向按钮添加额外的信息/功能、需要单击的方式、需要使用的特定按钮等等。看起来像这样:

^{pr2}$

仅当按下鼠标按钮-1(鼠标左键)时,此操作才有效。一些替代版本如下:

btn.bind(sequence="<ButtonRelease-1>", func=master.destroy)

当按下并释放鼠标按钮1时,上述操作有效。在

btn.bind(sequence="<Double-Button-1>", func=master.destroy)

类似地,上述顺序仅在鼠标按钮-1被双击时有效。在

注意,在下面这个简单的方法中不能包含一个简单的方法。在

def callback(event):
          pass

有关bind方法的整个序列列表,请参阅this文章。

相关问题 更多 >