Tkinter:tkButtonDown、tkBuntonEnter、tkButtonInvoke、tk ButtonLeave、tkPuttonUp

大家好,
这是备忘录,以便其他人可以共享信息.
以下方法在TKINTER按钮类中声明.
tkbuttondown(),tkbuttonenter(),tkbuttoninvoke(),tkbuttonleave(),
tkbuttonup()
但是,它们无法正常工作,当您尝试时,您会得到:
_tkinter.tclerror:无效命令名称" tkbuttonleave"
TKINTER中的绑定将它们映射到不存在的TK
方法.
我需要严重使用该方法,但找不到任何清晰的方法
解决方案.因此,我花时间解决这个问题.
例如,tkbuttonleave()声明如下:
tkinter.py Line 2005 of 3759
def tkbuttonleave(self, *虚拟):
self.tk.call('tkbuttonleave',self._w)
现在,在TK源分布中,我找到了以下内容:
不支持的tcl
#由TK提供的命令无官方支持.在你的
# 个人风险.他们可能会更改或消失,恕不另行通知.
名称空间eval :: TK :: unnupported {
#从TK私有命令的旧全局名称到其他们的地图
#新名称空间已封装的名称.
可变的privateCommands
数组集privateCommands {
tkbuttonautoinvoke :: TK :: buttonautoinvoke
tkbuttondown :: TK :: buttondown
tkbuttonenter :: TK :: buttonenter
tkbuttoninvoke :: TK :: buttoninvoke
tkbuttonleave :: TK :: buttonleave
tkbuttonup :: TK ::纽扣
....狙击...
这似乎表明tkinter绑定是绑定的
TK方法.
而且,该方法应称为:: TK :: buttonleave.
我将以下内容放入我的TKINTER代码中,并起作用.
self.btn.tk.call(':: tk :: buttonleave',self.btn._w)
//
概括:
(1)Tkbuttondown,Tkbuttonenter,tkbuttoninvoke,tkbuttonleave,
tkbuttonup无法正常工作.
(2)绑定不正确
(2)解决方法是直接调用正确的TK方法
我希望未来的tkinter能够纠正,以便方法是
如有记录.
此致,
aki-

# 回答1


2008年9月1日星期一,晚上7:45,Akineko 您是否要模拟点击?你应该使用
event_generate,以下更多.
您正在查看错误的地方,尝试查看Library/button.tcl
现在,为什么我说使用event_generate而不是打电话
方法自己.. TK设置了几个绑定,这些绑定在
您要做的所有这些事情的平台,它们最终
调用这些命令,您正在尝试称呼自己.因此对于
实例,鉴于您有一个按钮:
btn = tkinter.button()
要获取TK :: ButtonEnter,您应该这样做:
btn.event_generate(" ")
这也将对其他这些事件有效,请离开(离开),
Button-1(down),ButtonRelease-1(UP),空间(调用).剩余的
一个要谈论的是这个" buttoautoinvoke",我不确定您是否
确实需要它,但是,如果这样做,可以使用btn.invoke()假设
该按钮具有关联的回调,将使用"之后"到
安排另一个btn.invoke().
您应该期望它们完全从TK中删除 实际上.
- -
-Guilherme H. Polo Goncalves
# 回答2


在9月1日,下午5:52," Guilherme Polo" 实际上,我试图实现一个"粘性"按钮.
(稍后通过另一个事件完成按钮)
我已经尝试了event_generate.
就我没有触摸其他小部件而言,它可以使用.
但是如果event_generate在其他方面调用,它以某种方式无法正常工作
小部件被激活.
难过听到这个消息.明确控制按钮行为可能不会
要做的事情是一件常见的事情,但仍然有必要做.但是你
给了我足够的见解.
aki-
# 回答3


2008年9月1日星期一,晚上10:09,Akineko 实际上,我试图实现一个"粘性"按钮.
(稍后通过另一个事件完成按钮)
我已经尝试了event_generate.
就我没有触摸其他小部件而言,它可以使用.
但是如果event_generate在其他方面调用,它以某种方式无法正常工作
小部件被激活.
难过听到这个消息.明确控制按钮行为可能不会
要做的事情是一件常见的事情,但仍然有必要做.但是你
给了我足够的见解.
这是您的幻想,称这些方法不是方式
对于明确控制按钮的行为,不仅仅是生成
适当的事件.明确的方法是不使用按钮
(AB)使用帆布.
- -
-Guilherme H. Polo Goncalves
# 回答4


在9月1日,下午6:34," Guilherme Polo" 我的一些自定义小部件使用了画布.
当我设计"粘性"按钮小部件时,我简要考虑使用
帆布,但我拒绝了,因为我想要的那个只是
按钮("粘性"行为除外).
我知道使用画布提供了更大的灵活性,但我
觉得这是过度的.
您的见解对我和其他人设计时非常有帮助
自定义小部件.
aki-
# 回答5


2008年9月1日星期一,晚上11:01,Akineko 我的一些自定义小部件使用了画布.
当我设计"粘性"按钮小部件时,我简要考虑使用
帆布,但我拒绝了,因为我想要的那个只是
按钮("粘性"行为除外).
您能澄清这种"粘性"行为是什么?你指的是
一个切换按钮?如果是的,那么您可能会很简单
Checkbutton:
checkbutton = tkinter.checkbutton(indienatoron = false,text ='test')
- -
-Guilherme H. Polo Goncalves
# 回答6


在9月1日,晚上8:28," Guilherme Polo" 我不会花几天的时间来创建一个自定义的小部件来模仿
Checkbutton ;-)
我不需要描述细节,但是按下按钮
一会儿,通过通信发送命令.
该按钮是按钮("粘性"),直到
确认是通过沟通寄回的.
这是一种让用户知道该动作已确认的方式
另一端.
我认为可能很少有人需要这样的小部件.
aki-
# 回答7


在2008年9月2日星期二,上午12:44, eko 我不会花几天的时间来创建一个自定义的小部件来模仿
Checkbutton ;-)
我不需要描述细节,但是按下按钮
一会儿,通过通信发送命令.
该按钮是按钮("粘性"),直到
确认是通过沟通寄回的.
这是一种让用户知道该动作已确认的方式
另一端.
我认为可能很少有人需要这样的小部件.
您甚至尝试使用指示器= false创建一个checkbutton吗?你
可能会感到惊讶.
- -
-Guilherme H. Polo Goncalves
# 回答8


在9月2日,上午5:46," Guilherme Polo" 我没有.我对Checkbutton的看法是带有支票的按钮.
因此,我按照您的建议进行了尝试.
是的你是对的.这几乎是我想要的(粘性行为).
通过忽略纽扣并留下事件,是的,它可以完美
满足我的要求.
由于Checkbutton具有取消选择方法,这是一种更好的方法,我
必须承认.
感谢您向我展示正确的实施方法.
aki-

标签: python

添加新评论