2

Tkinter、python でボタンを操作しています。

問題は、1 つのボタンをクリックすると、ボタンのテキストが揺れることです。このウィジェットのデフォルトの動作である可能性があり、それを無効にして静的にする方法がわかりません。

これを修正する方法を知っている人はいますか?

4

1 に答える 1

3

ボタンをクリックすると、レリーフが隆起から沈みに変化することを意味していると思います。

これは私がhttp://wiki.tcl.tk/1048で見つけたものです(それを見るには「ディスカッションを表示」をクリックしてください):

残念ながら、クリック時に使用されるレリーフは ('sunken' として) ハードコーディングされているため、ボタンのバインディングのために 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() 
于 2012-05-20T15:57:37.243 に答える