Source code for pi3d.util.TkWin
import os
from six_mod.moves import tkinter
[docs]class TkWin(tkinter.Tk):
"""
*TkWin* encapsulates a Tk window and keeps track of the mouse and keyboard.
"""
def __init__(self, parent, title, width, height, bg='#000000'):
"""
Arguments:
*parent*
Parent Tk window or Null for none.
*title*
Title for window.
*width, height*
Dimensions of window.
"""
display = os.environ.get('DISPLAY', None)
if not display:
os.environ['DISPLAY'] = ':0'
tkinter.Tk.__init__(self, parent)
def mouseclick_callback(event):
if not self.resized:
self.ev = 'click'
self.x = event.x
self.y = event.y
def mousemove_callback(event):
if not self.resized:
self.ev = 'move'
self.x = event.x
self.y = event.y
def mousewheel_callback(event):
if not self.resized:
self.ev = 'wheel'
self.num = event.num
self.delta = event.delta
def drag_callback(event):
if not self.resized:
self.ev = 'drag'
self.x = event.x
self.y = event.y
mouserot = event.x
def resize_callback(event):
self.ev = 'resized'
self.winx = self.winfo_x()
self.winy = self.winfo_y()
self.width = event.width
self.height = event.height
self.resized = True
def key_callback(event):
if not self.resized:
self.ev = 'key'
self.key = event.keysym
self.char = event.char
tkinter.Tk.bind(self, '<Button-1>', mouseclick_callback)
tkinter.Tk.bind(self, '<B1-Motion>', drag_callback)
tkinter.Tk.bind(self, '<Motion>', mousemove_callback)
tkinter.Tk.bind(self, '<MouseWheel>', mousewheel_callback)
tkinter.Tk.bind(self, '<Configure>', resize_callback)
tkinter.Tk.bind_all(self, '<Key>', key_callback)
tkinter.Tk.geometry(self, str(width) + 'x' + str(height))
tkinter.Tk.configure(self, bg=bg)
self.title(title)
self.ev = ''
self.resized = False