tkinter btn visual state with tkMessageBox
Hendrik van Rooyen
mail at microcorp.co.za
Sun Aug 20 05:04:33 EDT 2006
<jmdeschamps at gmail.com> Wrote:
|
| Hendrik van Rooyen wrote:
| > <jmdeschamps at gmail.com> wrote:
| >
| > To: <python-list at python.org>
| >
| >
| > | why is the button sunken when called through a bind method, and not
| > | with the command attribute?
| > | Thank you!
| > |
| > |
| > | ## Cut'nPaste example
| > | from Tkinter import *
| > | import tkMessageBox
| > |
| > | class Vue(object):
| > | def __init__(self):
| > | self.root=Tk()
| > | self.root.title("test button visual state")
| > | self.b1=Button(self.root,text="tkMessageBox.showinfo with bind
| > | :-(") #,command=self.showMsg)
| > | self.b1.bind("<Button>",self.showMsg)
| >
| >
8<---------------------------------------------------------------------------
| >
| > change this to :
| >
| > self.b1.bind("<ButtonRelease>",self.showMsg)
| >
| > Problem is that a button "sinks in" when you press it and "springs back"
when
| > you release it...
| >
| > and the "Button" leaves it sunken.... - because when you release, the
control is
| > no longer there
| >
| > - Hendrik
| Thanks Hendrik - is the command attribute connected to the bindable
| events?
| jm
I don't have a clue - you are either asking about advanced magic here,
or I don't understand your question - I believe the lower level routines
are common, but I don't *Know* this - so its a pity that some people
who shall be nameless have beaten their brains out in a thread about
a directory name here..
You may have noticed that there is another subtle bug with what I have
suggested to you - when you press the offending button, then move the
mouse to move the cursor off the screen button, - the button
"springs back" as expected - but then when you release the mouse
button, off the screen button, the call back is done anyway, instead of
being cancelled when the cursor moves off the screen button.
- for the command case, the sequence is different, and the call back is done
only if the release is done on the screen button...
- But this may just be my setup - does yours do the same?
I don't know how to fix that - you could look at sequences of events - button
push followed by release - But I doubt whether this will help, as its doing
something like that anyway (haven't tried it)
- Hendrik
More information about the Python-list
mailing list