How do I get the current widget in focus without changing focus?

Please support our Python advertiser: Programming Forums - DaniWeb Sister Site
Thread Solved

Join Date: Oct 2008
Posts: 4
Reputation: imabut is an unknown quantity at this point 
Solved Threads: 0
imabut imabut is offline Offline
Newbie Poster

How do I get the current widget in focus without changing focus?

 
0
  #1
Oct 25th, 2008
i'm trying to implement my own edit menu using Tkinter,

my cut and copy methods,... seems to work fine but I'm having allot of trouble getting my paste method to work. will someone please help?

(((its kinda ugly i know, but i'm still new to programming and i'm more focused on getting it
to work right. later I'll go back and really clean up my code and oop practice. )))


app['info']['name']
app['info']['balance']

are both entry widgets

app['info']['item'][ # ]
app['info']['cost'][ # ]
app['info']['date'][ # ]
are lists of entry widgets

def _copy(self):
app=self.app

if app['info']['name'].select_present():
if app['info']['name'].focus_get():
app['info']['name'].clipboard_clear()
app['info']['name'].clipboard_append( app['info']['name'].selection_get() )


elif app['info']['balance'].select_present():
if app['info']['balance'].focus_get():
app['info']['balance'].clipboard_clear()
app['info']['balance'].clipboard_append( app['info']['balance'].selection_get() )

else:
i = 0
for i in range(200):
app['catagory_info']['item'][i].clipboard_clear()
app['catagory_info']['cost'][i].clipboard_clear()
app['catagory_info']['date'][i].clipboard_clear()

if app['catagory_info']['item'][i].select_present():
if app['catagory_info']['item'][i].focus_get():
app['catagory_info']['item'][i].clipboard_append(
app['catagory_info']['item'][i].selection_get() )

elif app['catagory_info']['cost'][i].select_present():
if app['catagory_info']['cost'][i].focus_get():
app['catagory_info']['cost'][i].clipboard_append(
app['catagory_info']['cost'][i].selection_get() )

elif app['catagory_info']['date'][i].select_present():
if app['catagory_info']['date'][i].focus_get():
app['catagory_info']['date'][i].clipboard_append(
app['catagory_info']['date'][i].selection_get() )


#####################################################################################
def _cut(self):
app=self.app

x=0
if app['info']['name'].select_present():
if app['info']['name'].focus_get():
app['info']['name'].clipboard_clear()
app['info']['name'].clipboard_append( app['info']['name'].selection_get() )
app['info']['name'].delete(SEL_FIRST,SEL_LAST)

elif app['info']['balance'].select_present():
if app['info']['balance'].focus_get():
app['info']['balance'].clipboard_clear()
app['info']['balance'].clipboard_append( app['info']['balance'].selection_get() )
app['info']['balance'].delete(SEL_FIRST,SEL_LAST)

else:
i = 0
for i in range(200):
app['catagory_info']['item'][i].clipboard_clear()
app['catagory_info']['cost'][i].clipboard_clear()
app['catagory_info']['date'][i].clipboard_clear()

if app['catagory_info']['item'][i].select_present():
if app['catagory_info']['item'][i].focus_get():
app['catagory_info']['item'][i].clipboard_append(
app['catagory_info']['item'][i].selection_get() )
app['catagory_info']['item'][i].delete(SEL_FIRST,SEL_LAST)

elif app['catagory_info']['cost'][i].select_present():
if app['catagory_info']['cost'][i].focus_get():
app['catagory_info']['cost'][i].clipboard_append(
app['catagory_info']['cost'][i].selection_get() )
app['catagory_info']['cost'][i].delete(SEL_FIRST,SEL_LAST)

elif app['catagory_info']['date'][i].select_present():
if app['catagory_info']['date'][i].focus_get():
app['catagory_info']['date'][i].clipboard_append(
app['catagory_info']['date'][i].selection_get() )
app['catagory_info']['date'][i].delete(SEL_FIRST,SEL_LAST)

##########################################################
def _paste(self):
if app['info']['name'].focus_get():
app['info']['name'].insert(INSERT, app['info']['name'].clipboard_get())

if app['info']['balance'].focus_get():
app['info']['balance'].insert(INSERT, app['info']['balance'].clipboard_get())

...
...
...

<<<< this _paste method doesn't work, it always sets the focus to app['info']['name']
no mater where i paste at. How do I query where the insertion point is?

please someone help me. I've been going through Tkinter tutorials for over a week now, but i can not find a solution and i feel like its one of those really simple things that just keeps aluding me.

thanks.
Reply With Quote Quick reply to this message  
Join Date: Jul 2008
Posts: 1,063
Reputation: jlm699 is a jewel in the rough jlm699 is a jewel in the rough jlm699 is a jewel in the rough jlm699 is a jewel in the rough 
Solved Threads: 267
Sponsor
jlm699's Avatar
jlm699 jlm699 is offline Offline
Knows where his Towel is

Re: How do I get the current widget in focus without changing focus?

 
0
  #2
Oct 27th, 2008
Wrap your code in code tags:
[code=python]
# Code here
[/code]
1. Use Code Tags.
2. Homework? Show Effort.
3. Keep discussions on the forum: no PMs
Reply With Quote Quick reply to this message  
Join Date: Oct 2008
Posts: 4
Reputation: imabut is an unknown quantity at this point 
Solved Threads: 0
imabut imabut is offline Offline
Newbie Poster

Re: How do I get the current widget in focus without changing focus?

 
0
  #3
Oct 29th, 2008
Originally Posted by jlm699 View Post
Wrap your code in code tags:
[code=python]
# Code here
[/code]
please elaborate,

the snippet above looks like <html> ... I'm useing python's IDLE

please leave an example
Reply With Quote Quick reply to this message  
Join Date: Oct 2008
Posts: 45
Reputation: tyincali is an unknown quantity at this point 
Solved Threads: 6
tyincali tyincali is offline Offline
Light Poster

Re: How do I get the current widget in focus without changing focus?

 
0
  #4
Oct 29th, 2008
he was saying if you expect us to look at your code, put that before and after your code in your post. so that we can see syntax highlighting and what not.
Last edited by tyincali; Oct 29th, 2008 at 12:17 am.
Reply With Quote Quick reply to this message  
Join Date: Jul 2008
Posts: 1,063
Reputation: jlm699 is a jewel in the rough jlm699 is a jewel in the rough jlm699 is a jewel in the rough jlm699 is a jewel in the rough 
Solved Threads: 267
Sponsor
jlm699's Avatar
jlm699 jlm699 is offline Offline
Knows where his Towel is

Re: How do I get the current widget in focus without changing focus?

 
0
  #5
Oct 29th, 2008
Originally Posted by tyincali View Post
he was saying if you expect us to look at your code, put that before and after your code in your post. so that we can see syntax highlighting and what not.
Yes, this is for the forum members' sake. This way your code doesn't lose indentation and become unreadable to us. It also saves space, and turns on syntax highlighting.
1. Use Code Tags.
2. Homework? Show Effort.
3. Keep discussions on the forum: no PMs
Reply With Quote Quick reply to this message  
Join Date: Oct 2008
Posts: 45
Reputation: tyincali is an unknown quantity at this point 
Solved Threads: 6
tyincali tyincali is offline Offline
Light Poster

Re: How do I get the current widget in focus without changing focus?

 
0
  #6
Oct 29th, 2008
My suggestion would be to look at focus_displayof() instead of focus_get()
Reply With Quote Quick reply to this message  
Join Date: Oct 2008
Posts: 4
Reputation: imabut is an unknown quantity at this point 
Solved Threads: 0
imabut imabut is offline Offline
Newbie Poster

Re: How do I get the current widget in focus without changing focus?

 
0
  #7
Oct 30th, 2008
Originally Posted by tyincali View Post
My suggestion would be to look at focus_displayof() instead of focus_get()
thank u to all

i'm still learning how everything works, and i'm still very much a newbe,..

I tried this:

  1. w= app['info']['name'].displayof()
  2. w.insert(INSERT, w.selection_get() )

and got the following error:

  1. Exception in Tkinter callback
  2. Traceback (most recent call last):
  3. File "C:\Python25\lib\lib-tk\Tkinter.py", line 1403, in __call__
  4. return self.func(*args)
  5. File "C:\Python25\prg\bs1.py", line 258, in _paste
  6. w= app['info']['name'].displayof()
  7. AttributeError: Entry instance has no attribute 'displayof'

I appreciate all your patience and help,... i really am stuck,... I am self taught and also the only person in my life and family who has any interest in programming.. so hearing from you all was a real ray of hope 4 me
Reply With Quote Quick reply to this message  
Join Date: Oct 2008
Posts: 45
Reputation: tyincali is an unknown quantity at this point 
Solved Threads: 6
tyincali tyincali is offline Offline
Light Poster

Re: How do I get the current widget in focus without changing focus?

 
0
  #8
Oct 30th, 2008
.focus_displayof()

not

.displayof()
Last edited by tyincali; Oct 30th, 2008 at 4:44 pm.
I wish I had something cool to put here...
Reply With Quote Quick reply to this message  
Join Date: Oct 2008
Posts: 45
Reputation: tyincali is an unknown quantity at this point 
Solved Threads: 6
tyincali tyincali is offline Offline
Light Poster

Re: How do I get the current widget in focus without changing focus?

 
0
  #9
Oct 30th, 2008
take the following code as an example:

  1. from Tkinter import *
  2.  
  3. root = Tk()
  4.  
  5. def test():
  6. if (root.focus_displayof()==entry1):
  7. print 'hello'
  8.  
  9. entry1 = Entry(root)
  10. entry2 = Entry(root)
  11. button = Button(text='go', command=test)
  12.  
  13. entry1.pack()
  14. entry2.pack()
  15. button.pack()
  16. root.mainloop()

This will create a form with two entry widgets and a button.

When the button is pressed it executes test(). If entry1 had the focus when I pressed the button it will print 'hello', otherwise... nothing.

also, for your purposes, since it looks like you would like to be able to paste in several different places I would do something like:

  1. try:
  2. root.focus_displayof().insert(INSERT, root.focus_displayof().clipboard_get())
  3. except:
  4. pass

that way, whichever widget has focus will recieve the paste. Unless it isn't capable of being pasted to, in which case it fails silently
Last edited by tyincali; Oct 30th, 2008 at 4:54 pm.
I wish I had something cool to put here...
Reply With Quote Quick reply to this message  
Join Date: Jun 2007
Posts: 1,439
Reputation: evstevemd has a spectacular aura about evstevemd has a spectacular aura about evstevemd has a spectacular aura about 
Solved Threads: 128
evstevemd's Avatar
evstevemd evstevemd is offline Offline
Nearly a Posting Virtuoso

Re: How do I get the current widget in focus without changing focus?

 
0
  #10
Oct 30th, 2008
Originally Posted by imabut View Post
thank u to all

i'm still learning how everything works, and i'm still very much a newbe,..
If you feel annoyed by Tkinter, try others also!
I found myself in love with wxpython. Some have fallen in hands of pyQt, PyGTK etc. I mean when you start learning try as amny available as you can and then choose among them. Don't underestimate Tkinter, I don't mean it is uselless, No! It is great, but I mean as I said you may fall in hands of one of those

Just MHO
Steve
Atheist: God is man made imagination, he doesn't exist!
Theist: It's okay, can you imagine anything else that doesn't exist?
---- Python, C++ PHP and Java ----
Reply With Quote Quick reply to this message  
Reply

This thread has been marked solved.
Perhaps start a new thread instead?
Message:



Other Threads in the Python Forum
Thread Tools Search this Thread



Tag cloud for Python
About Us | Contact Us | Advertise | DaniWeb | Acceptable Use Policy | RSS Feed

©2003 - 2009 DaniWeb® LLC