On 7/15/2015 9:03 PM, Rick Johnson wrote:
You may have solved your input capturing problem, and i
don't think a GUI is the preferred solution for a
graphically deficient device anyhow, but you may well need a
GUI in the future, and this would be a fine example from which
to learn.
This really is a nice example. Your rationale for defining an app class
is the best I remember seeing.
To run in 3.x, change the first two lines to
import tkinter as tk
from tkinter.messagebox import showinfo, showerror
import Tkinter as tk
from tkMessageBox import showinfo, showerror
MSG1 = """\
To begin retinal stimulation, press r or g or b on your keyboard
Hold key down for extended stimulation!
"""
class App(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
self.bind("<KeyPress>", self.evtKeyDown)
self.bind("<KeyRelease>", self.evtKeyUp)
self.protocol("WM_DELETE_WINDOW", self.evtDeleteWindow)
w = tk.Label(self, text=MSG1)
w.pack()
self.config(bg='white')
self.geometry('500x500')
self.focus_set()
def evtDeleteWindow(self):
showinfo("The window is Dying", "Goodbye cruel world!", parent=self)
self.destroy()
def evtKeyDown(self, event):
key = event.keysym.lower()
alert = False
if key == 'r':
self.config(bg='red')
elif key == 'g':
self.config(bg='green')
elif key == 'b':
self.config(bg='blue')
else:
Can condense block above to this easily extended code: (Replacing if
if/elif/elif/... chains, when possible, is part of mastering Python.)
try:
self['bg'] = {'r':'red', 'g':'green', 'b':'blue'}[key]
except KeyError:
msg = 'I *TOLD* you to press r or g or b, not {0!r}!'.format(key)
showerror('', msg, parent=self)
def evtKeyUp(self, event):
self.config(bg='white')
if __name__ == '__main__':
app = App()
app.title('Retina Stimultor')
app.mainloop()
print "This code only executes *AFTER* the mainloop call returns!"
Adding parens to print, when there is a single object being printed, has
no effect in 2.x and makes the statement work in 3.x. The following
works the same in both.
print("Mainloop has returned")
--
Terry Jan Reedy
--
https://mail.python.org/mailman/listinfo/python-list