[Tkinter-discuss] Tkinter-discuss Digest, Vol 35, Issue 15

Harlin Seritt harlinseritt at yahoo.com
Tue Jan 23 00:59:29 CET 2007


Vasilis,

Would you mind posting your full code for this?

Thanks,

Harlin Seritt


tkinter-discuss-request at python.org wrote: Send Tkinter-discuss mailing list submissions to
 tkinter-discuss at python.org

To subscribe or unsubscribe via the World Wide Web, visit
 http://mail.python.org/mailman/listinfo/tkinter-discuss
or, via email, send a message with subject or body 'help' to
 tkinter-discuss-request at python.org

You can reach the person managing the list at
 tkinter-discuss-owner at python.org

When replying, please edit your Subject line so it is more specific
than "Re: Contents of Tkinter-discuss digest..."


Today's Topics:

   1. more info on find_closest problem (Jeff Cagle)
   2. Re: Find_closest, bbox, and weirdness (Russell E Owen)
   3. more find_closest followup (Jeff Cagle)
   4. Re: Find_closest, bbox, and weirdness (Cameron Laird)
   5. Resetting to default background color (Vasilis Vlachoudis)


----------------------------------------------------------------------

Message: 1
Date: Thu, 18 Jan 2007 14:24:24 -0500
From: Jeff Cagle 
Subject: [Tkinter-discuss] more info on find_closest problem
To: tkinter-discuss at python.org
Message-ID: <45AFC968.8010806 at juno.com>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed

Well, I take one thing back: There was a text object at the point 
(30,10) -- a text object that was updated with mouse x,y coords every 
time a  event fired.  When without that text object, 
find_closest() works well.  With it, find_closest gets confused again. 

It should be possible, I hope, to work around this issue by means of 
tags for the text objects.  But I'm curious: why is this happening?

Here's the code, with updated output:

[code="seems like it oughta work"]
def display(self):
        self.mainw = Tk()
        self.mainw.f = Frame(self.mainw)
        self.mainw.f.c = Canvas(self.mainw.f,width=400,height=400)
        # remove next line for success with find_closest()
        self.mainw.f.c.mouse_text = 
self.mainw.f.c.create_text(30,10,text='') 

...
        self.print_canvas()
        print "Center coords: (%.1f,%.1f) and (%.1f, %.1f)" % (x0,y0,x1,y1)
        f = mathutils.line_func((x0,y0),(x1,y1))
        g = mathutils.inv_line_func((x0,y0),(x1,y1))

        print "Objects near (%.1f,%.1f)" % (x0,y0), \
              self.mainw.f.c.find_closest(x0,y0)
        start_id = self.mainw.f.c.find_closest(x0,y0)[0]
        print "start_id: ", start_id
        start_x0,start_y0,start_x1,start_y1 = self.mainw.f.c.bbox(start_id)
        print "Bounding box near (%.1f,%.1f): (%.1f,%.1f) x (%.1f,%.1f)" % \
              (x0,y0,start_x0,start_y0,start_x1,start_y1)

        print "Objects near (%.1f,%.1f)" % (x1,y1), \
              self.mainw.f.c.find_closest(x1,y1)
        end_id = self.mainw.f.c.find_closest(x1,y1)[0]
        print "end_id: ", end_id
        end_x0,end_y0,end_x1,end_y1 = self.mainw.f.c.bbox(end_id)
        print "Bounding box near (%.1f,%.1f): (%.1f,%.1f) x (%.1f,%.1f)" % \
              (x1,y1,end_x0,end_y0,end_x1,end_y1)

        raw_input("Press  to continue...")
...
[/code]
[output="without offending text object"]
 >>> p.display()
The canvas contains
------------------
Item_ID      Type    coords
1            text    [200.0, 20.0]
2            text    [278.09907304116047, 37.825603777564567]
3            text    [340.72966684424534, 87.771835665427943]
4            text    [375.48702419272826, 159.94623188786341]
5            text    [375.48702419272826, 240.05376811213657]
6            text    [340.72966684424534, 312.22816433457206]
7            text    [278.09907304116047, 362.17439622243546]
8            text    [200.00000000000003, 380.0]
9            text    [121.90092695883955, 362.17439622243546]
10           text    [59.270333155754656, 312.22816433457206]
11           text    [24.512975807271744, 240.05376811213659]
12           text    [24.512975807271744, 159.94623188786343]
13           text    [59.270333155754628, 87.771835665428]
14           text    [121.90092695883949, 37.825603777564567]
Center coords: (278.1,37.8) and (375.5, 159.9)
Objects near (278.1,37.8) (2,)
start_id:  2
Bounding box near (278.1,37.8): (269.0,32.0) x (288.0,45.0)
Objects near (375.5,159.9) (4,)
end_id:  4
Bounding box near (375.5,159.9): (362.0,154.0) x (388.0,167.0)
Press  to continue...
[/output]

[output="with offending text object"]
 >>> p.display()
The canvas contains
------------------
Item_ID        Type    coords
1              text    [30.0, 10.0]
2              text    [200.0, 20.0]
3              text    [278.09907304116047, 37.825603777564567]
4              text    [340.72966684424534, 87.771835665427943]
5              text    [375.48702419272826, 159.94623188786341]
6              text    [375.48702419272826, 240.05376811213657]
7              text    [340.72966684424534, 312.22816433457206]
8              text    [278.09907304116047, 362.17439622243546]
9              text    [200.00000000000003, 380.0]
10             text    [121.90092695883955, 362.17439622243546]
11             text    [59.270333155754656, 312.22816433457206]
12             text    [24.512975807271744, 240.05376811213659]
13             text    [24.512975807271744, 159.94623188786343]
14             text    [59.270333155754628, 87.771835665428]
15             text    [121.90092695883949, 37.825603777564567]
Center coords: (278.1,37.8) and (375.5, 159.9)
Objects near (278.1,37.8) (1,)
start_id:  1
Bounding box near (278.1,37.8): (29.0,4.0) x (31.0,17.0)
Objects near (375.5,159.9) (1,)
end_id:  1
Bounding box near (375.5,159.9): (29.0,4.0) x (31.0,17.0)
Press  to continue...
[/output]

Thanks for any insights,
Jeff Cagle






------------------------------

Message: 2
Date: Thu, 18 Jan 2007 12:36:18 -0800
From: Russell E Owen 
Subject: Re: [Tkinter-discuss] Find_closest, bbox, and weirdness
To: tkinter-discuss at python.org
Message-ID: 

In article <45AF2253.2080903 at juno.com>, Jeff Cagle  
wrote:

> So I was trying to pretty up a GUI.  It took 20 minutes to write code to 
> place names in a circle and draw arrows to the names that are related 
> (actually, the names are filenames, and the arrows represent 'import' or 
> 'from ... import' statements).
> 
> It's taken a couple of hours to try to clean it up so that the arrows go 
> up to the bounding box of the text, but not inside. 
> 
> Here was the plan: Compute the line that connects the centers of the 
> text objects.  Figure out where that line intersects the bounding boxes 
> of the texts, and draw the lines to the intersection points instead of 
> center-to-center.
> 
> It all works ... except that I don't get the right bounding boxes.  
> Here's the code:

it sounds like object with ID 1 may be overlapping all the other 
objects. Tk's find_closest is primitive in how it handles overlap.

Unless you can guarantee that your text objects will never overlap I 
suggest you find the closest one yourself. Keep a list of object coords 
and scan through them. If the objects can be moved around then use a 
callback to update the position.

-- Russell



------------------------------

Message: 3
Date: Thu, 18 Jan 2007 16:16:23 -0500
From: Jeff Cagle 
Subject: [Tkinter-discuss] more find_closest followup
To: tkinter-discuss at python.org
Message-ID: <45AFE3A7.3060905 at juno.com>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed

In the end, find_closest was giving odd results even when the offending 
mouse_text object was not created. 

So I fired it and replaced it with a 'find_closest_label()' that 
searches only the text labels for the closest match.  Problem solved ... 
errr ... worked around.

Jeff




------------------------------

Message: 4
Date: Thu, 18 Jan 2007 21:21:49 +0000
From: Cameron Laird 
Subject: Re: [Tkinter-discuss] Find_closest, bbox, and weirdness
To: Russell E Owen 
Cc: tkinter-discuss at python.org
Message-ID: <20070118212149.GB24852 at lairds.us>
Content-Type: text/plain; charset=us-ascii

On Thu, Jan 18, 2007 at 12:36:18PM -0800, Russell E Owen wrote:
   .
   .
   .
> > Here was the plan: Compute the line that connects the centers of the 
> > text objects.  Figure out where that line intersects the bounding boxes 
> > of the texts, and draw the lines to the intersection points instead of 
> > center-to-center.
> > 
> > It all works ... except that I don't get the right bounding boxes.  
> > Here's the code:
> 
> it sounds like object with ID 1 may be overlapping all the other 
> objects. Tk's find_closest is primitive in how it handles overlap.
> 
> Unless you can guarantee that your text objects will never overlap I 
> suggest you find the closest one yourself. Keep a list of object coords 
> and scan through them. If the objects can be moved around then use a 
> callback to update the position.
   .
   .
   .
?  I've had *great* results with "closest".  While I agree
that your approach should be kept in mind, it's not the 
first one I try when I'm in the situation I understand from
the original description.  Do you have any details on how
"closest" has failed for you?


------------------------------

Message: 5
Date: Fri, 19 Jan 2007 10:14:43 +0100
From: "Vasilis Vlachoudis" 
Subject: [Tkinter-discuss] Resetting to default background color
To: 
Message-ID:
 <2AACD4EB2F123248A064A23843B3A173020BDE at cernxchg47.cern.ch>
Keywords: CERN SpamKiller Note: -50 Charset: west-latin
Content-Type: text/plain; charset="us-ascii"

Dear All,

 

How can I reset the background color of widget to the default one?

 

Imagine that I create an entry widget with a specific background color
i.e. white

e=Entry(root, background="white")

e.pack()

...

and at a later state I want to configure the color to the default system
one (equivalent like when I create it: e=Entry(root))

I've tried

e["background"] = ""                    # didn't work

e["background"] = None              # nothing

del e["background"]                    # neither

 

Cheers

Vasilis

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.python.org/pipermail/tkinter-discuss/attachments/20070119/8b722144/attachment.html 

------------------------------

_______________________________________________
Tkinter-discuss mailing list
Tkinter-discuss at python.org
http://mail.python.org/mailman/listinfo/tkinter-discuss


End of Tkinter-discuss Digest, Vol 35, Issue 15
***********************************************


 
---------------------------------
Food fight? Enjoy some healthy debate
in the Yahoo! Answers Food & Drink Q&A.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.python.org/pipermail/tkinter-discuss/attachments/20070122/8dd00e17/attachment.htm 


More information about the Tkinter-discuss mailing list