2012-05-20 45 views
2

我正在使用Tkinter,python中的按钮。如何在单击按钮时禁用文本抖动?

事情是当我点击按钮的文本按钮时,一个按钮抖动。这可能是这个小部件的默认行为,我不知道如何禁用它并使其成为静态。

有谁知道如何解决这个问题?

+2

您能给出一个最小的代码示例吗? – Junuxx

回答

3

我认为你是指当你点击一个按钮时浮凸从凹陷变为凹陷。

这是我在http://wiki.tcl.tk/1048发现(点击“显示讨论”看到它):

不幸的是,当你点击使用浮雕硬编码(如 “沉没”),这样你就可以” t配置它每个部件,而不需要为按钮的绑定黑客Tk 内部。

所以解决这个问题的最简单的方法是,始终使按钮出现凹陷

MyButton = Tkinter.Button(
    self.frame, 
    text = "Foobar", 
    command = self.foobar, 
    relief=Tkinter.SUNKEN 
) 

的是它的缺点是,它可能使按钮看起来反应迟钝。

您还可以使用除按钮之外的小部件作为可点击的项目(由Joel Cornett建议)。下面是一个用作按钮的标签的简单示例:

import Tkinter 

class main: 
     def __init__(self,root): 
       # make a label with some space around the text 
       self.lbl1 = Tkinter.Label(root, 
              width = 16, height = 4, 
              text = "Foobar")     
       self.lbl1.pack() 

       # Call a function when lbl1 is clicked 
       # <Button-1> means a left mouse button click 
       self.lbl1.bind("<Button-1>", self.yadda) 
       self.lbl1.bind("<Enter>", self.green) 
       self.lbl1.bind("<Leave>", self.red) 

     def yadda(self, event): 
       self.lbl1.config(text="Clicked!") 

     def green(self, event): 
       self.lbl1.config(bg="green") 

     def red(self,event): 
       self.lbl1.config(bg="red") 

if __name__ == "__main__": 
    root = Tkinter.Tk() 
    main(root) 
    root.mainloop() 
+0

也可以使用画布对象而不是按钮。 DIY一个点击/悬停动画并不难。 –

+0

是的,没错。谢谢Junuxx。 是不是有办法解决这个问题,而不是让按钮总是出现凹陷? – jdscosta91

+0

是的,你可以使用一个画布,就像Joel建议的那样。或者一个标签,只要文字就够了。我会在我的答案中加入一个例子。 – Junuxx