单击按钮时如何禁用文本抖动?

时间:2012-05-20 15:33:29

标签: python button widget tkinter options

我正在使用Tkinter,python中的按钮。

事情就是当我点击一个按钮时,按钮的文字会震动。它可能是此窗口小部件的默认行为,我不知道如何禁用它并将其设置为静态。

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

1 个答案:

答案 0 :(得分:3)

我认为你的意思是当你点击一个按钮时,从凸起到凹陷的浮雕变化。

这是我在http://wiki.tcl.tk/1048上找到的(点击“显示讨论”以查看它):

  

不幸的是,点击时使用的浮雕是硬编码的(如   '凹陷'),所以你无法在不攻击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()