TkInter bind() event is not firing event trigger

rantingrick rantingrick at gmail.com
Tue Jun 22 20:47:41 EDT 2010


On Jun 22, 7:21 pm, Anthony Papillion <papill... at gmail.com> wrote:

> I've also removed the (event) parameter just in case and tried it and
> it makes no difference. What am I doing wrong here?

Well don't remove the event parameter because Tkinter will pass it
every time since this is an EVENT! Here is some code to play with.
Note: If using Python 3.x use lowercase Tkinter!

#-- Start Code --#

import Tkinter as tk
from Tkconstants import *

class MyListbox(tk.Listbox):
    def __init__(self, master, **kw):
        tk.Listbox.__init__(self, master, **kw)
        self.bind("<Double-Button-1>", self.onButtonOneDoubleClick)
        self.bind("<Button-3>", self.onButtonThreeClick)

    def onButtonOneDoubleClick(self, event):
        lineno = self.nearest(event.y)
        print 'User double clicked line: %s' %(lineno)

    def onButtonThreeClick(self, event):
        lineno = self.nearest(event.y)
        self.activate(lineno)
        #
        # You make this next comand a bit smarter
        # and only clear the selection when user
        # clicks on a line this is not already selected
        # (well in multi line mode anyway), but i cannot
        # do all the work! ;)
        self.selection_clear(0, END)
        self.selection_set(lineno)
        print 'User right clicked line: %s' %(lineno)


if __name__ == '__main__':
    app = tk.Tk()
    listbox = MyListbox(app, width=10, height=10, bg='white',
selectmode=EXTENDED)
    for x in range(100):
        listbox.insert(END, x)
    listbox.pack(fill=BOTH, expand=1)
    app.mainloop()

#-- End Code --#



More information about the Python-list mailing list