Python tkinterのBind(バインディングイベント)の使用例


1、マウスイベントをバインドし、イベントのプロパティを取得する

# -*- encoding=utf-8 -*-

import tkinter
from tkinter import *


def left_mouse_down(event):
  print('      ')

  #      
  widget = event.widget
  print('       :{}'.format(widget))
  print('    :{}'.format(widget.cget('bg')))
  widget_x = event.x #          x
  print('         :{}'.format(widget_x))
  widget_y = event.y #          y
  print('         :{}'.format(widget_y))
  x_root = event.x_root #              
  print('             :{}'.format(x_root))
  y_root = event.y_root #              
  print('             :{}'.format(y_root))


def left_mouse_up(event):
  print('      ')
def moving_mouse(event):
  print('         ')
def moving_into(event):
  print('    ')
def moving_out(event):
  print('    ')
def right_mouse_down(event):
  print('      ')
def right_mouse_up(event):
  print('      ')
def pulley_up(event):
  print('      ')
def focus(event):
  print('    ')
def unfocus(event):
  print('    ')


if __name__ == '__main__':
  win = tkinter.Tk() #   
  win.title('     ') #   
  screenwidth = win.winfo_screenwidth() #     
  screenheight = win.winfo_screenheight() #     
  width = 500
  height = 300
  x = int((screenwidth - width) / 2)
  y = int((screenheight - height) / 2)
  win.geometry('{}x{}+{}+{}'.format(width, height, x, y)) #       

  label = Label(text='  ', relief='g', font=('  ', 20))
  label.pack(pady=10)

  label.bind('<Button-1>', left_mouse_down) #       
  label.bind('<ButtonRelease-1>', left_mouse_up) #       
  label.bind('<Button-3>', right_mouse_down) #       
  label.bind('<ButtonRelease-3>', right_mouse_up) #       
  label.bind('<B1-Motion>', moving_mouse) #          
  label.bind('<Enter>', moving_into) #       
  label.bind('<Leave>', moving_out) #       
  label.bind('<FocusIn>', focus) #     
  label.bind('<FocusOut>', unfocus) #     
  label.focus_set() #     
  Entry().pack()

  win.mainloop()

2、キーボードイベントをバインドし、イベントのプロパティを取得する

# -*- encoding=utf-8 -*-
import tkinter
from tkinter import *


def keyboard_event(event):
  char = event.char
  print('   char:{}'.format(char))
  key_code = event.keycode
  print('   key code:{}'.format(key_code))


def entry_enter(event):
  print('      :' + entry.get())


def shift_f(event):
  print('SHIFT + F')
  print(event.char)
  print(event.keycode)


def num_lock(event):
  print('num_lock')
  print(event.char)
  print(event.keycode)


if __name__ == '__main__':
  win = tkinter.Tk() #   
  win.title('     ') #   
  screenwidth = win.winfo_screenwidth() #     
  screenheight = win.winfo_screenheight() #     
  width = 500
  height = 300
  x = int((screenwidth - width) / 2)
  y = int((screenheight - height) / 2)
  win.geometry('{}x{}+{}+{}'.format(width, height, x, y)) #       

  label = Label(text='  ', relief='g', font=('  ', 20))
  label.pack(pady=10)
  label.focus_set()
  label.bind('<Return>', keyboard_event) #     
  label.bind('<Shift F>', shift_f)
  label.bind('<Num_Lock>', num_lock)

  entry = Entry()
  entry.pack()
  entry.bind('<Return>', entry_enter) #     

  win.mainloop()

以上がPython tkinterのBind(バインディングイベント)の使用例の詳細です。python tkinter Bindに関する資料は他の関連記事に注目してください。