2012-05-20 49 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