Python.use(better,Tkinter)《16》Event

《前の記事|記事一覧|次の記事》
Python.use(better, Tkinter)


Tkinter への誘い(いざない)《16》

■ 概要

イベントを処理する方法を紹介します。

Tkinter によるオブジェクト指向プログラミングへの扉を開きます。
※ Tcl/Tk で作成した例題を、Tkinter で再構成しました。

〓 部品 Frame

アプリケーションを起動すると、ウィンドウが現われます。

フレーム(水色の領域)内でマウスカーソルを移動させると、表示される座標値が変化します。

  • 上部には、絶対座標(スクリーン座標)が表示されます。
  • 下部には、相対座標(widget の左上隅が原点になる)が表示されます。

フレームの中心は同じ座標 (50,50) でも、ウィンドウを移動させると、そのスクリーン座標は異なります。

def ex_Event():
    root = Tk()
    root.title("class Event")
    root.geometry("150x150")

    label_screen = Label(root)
    label_mouse  = Label(root)
    frame = Frame(root, width=100, height=100, bg="cyan")

    x, y = 0, 0
    def motion(event):
        x, y = event.x, event.y
        label_mouse.configure(text="%s,%s"%(x, y))
        x, y = event.x_root, event.y_root
        label_screen.configure(text="%s,%s"%(x, y))
    frame.bind("", motion)

    label_screen.pack()
    frame.pack()
    label_mouse.pack()

    root.mainloop()

《Note》

class Misc:        # /Python-3.0/Lib/tkinter/__init__.py
    def bind(self, sequence=None, func=None, add=None):
        """Bind to this widget at event SEQUENCE a call to function FUNC.
  • 引数 sequence に指定したイベントが発生すると、関数 func を起動します。
attributes
x マウスの位置(x 座標)
y マウスの位置(y 座標)
x_root マウスの位置(x 座標)スクリーン座標
y_root マウスの位置(y 座標)スクリーン座標

Last updated♪2009/08/25