<div dir="ltr">I want to implement your second suggestion :<div><br></div><div>"<span style="color:rgb(80,0,80);font-size:12.8px">2) If you want your host/switch/line tools et.c to also double as</span><span style="color:rgb(80,0,80);font-size:12.8px"> </span></div><span style="color:rgb(80,0,80);font-size:12.8px">selection tools (e.g. click outside an item will create a new item, </span><br style="color:rgb(80,0,80);font-size:12.8px"><span style="color:rgb(80,0,80);font-size:12.8px">while click on an item will select it), then you need to check if </span><br style="color:rgb(80,0,80);font-size:12.8px"><span style="color:rgb(80,0,80);font-size:12.8px">there's an item under the cursor when the click happens, and if there </span><br style="color:rgb(80,0,80);font-size:12.8px"><div><span style="color:rgb(80,0,80);font-size:12.8px">is, select it, otherwise go on with your current logic.</span><span style="color:rgb(80,0,80);font-size:12.8px"> </span>"</div><div><br></div><div>And to do that I wrote this code:</div><div><br></div><div>







<p class=""><span class=""><b>if </b></span>host_cs == <span class="">1</span>:<br>
    <span class="">self</span>.host_item = host_Object()<br>
    <span class=""><b>for </b></span>host <span class=""><b>in </b></span>hostItem_list:<br>
        <span class=""><b>if </b></span>host.isUnderMouse():<br>
            <span class=""><b>print </b></span><span class="">'under mouse'</span></p><p class="">The problem here is that I can only select the first item I ever create and I have to keep on pressing the item (maybe about 4-5 times) until it can actually be selected. I tried using the isSelected() method to check if the item was selected and I still get the same result. I also tried to test for a collision when adding the items so the items aren't drawn over each other (for when trying to select an item the host_item keeps on being added to the scene):</p><p class="">







</p><p class=""><span class=""><b>if </b></span>host_cs == <span class="">1</span>:<br>
    <span class="">self</span>.host_item = host_Object()<br>
    <span class=""><b>for </b></span>host <span class=""><b>in </b></span>hostItem_list:<br>         <span class=""><b>if </b></span><span class="">self</span>.host_item.host_pixItem.collidesWithItem(host):</p><p class="">              <span class=""><b>print </b></span><span class="">'collision'</span></p><p class="">Here the "<span class=""><b>if </b></span><span class="">self</span>.host_item.host_pixItem.collidesWithItem(host):" statement keeps giving "False" as the output even though when I try to add an item over another item the statement clearly should return "True".</p><p class=""><br></p><p class="">By the way I'm sorry for the late replies I try to take your suggestions in consideration and I try to implement them before replying back to you.</p><p class=""><br></p><p class=""> </p></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Apr 25, 2016 at 9:07 PM, Elvis Stansvik [via Python] <span dir="ltr"><<a href="/user/SendEmail.jtp?type=node&node=5189412&i=0" target="_top" rel="nofollow" link="external">[hidden email]</a>></span> wrote:<br><blockquote style='border-left:2px solid #CCCCCC;padding:0 1em' class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">

        2016-04-25 19:27 GMT+02:00 sw33tz <<a href="http:///user/SendEmail.jtp?type=node&node=5189328&i=0" rel="nofollow" link="external" target="_blank">[hidden email]</a>>:
<br>> thank you for the reply. I am able to select the item when there is only one
<br>> item but I want the user to be able to add more than one item and also
<br>> select any item that they added. With my code I can't do that because with
<br>> every press event it just keeps adding items. Is there a way I can make this
<br>> happen?
<br><br>For the first question, I think the default behavior is that you can
<br>select multiple items by holding down Ctrl. If you want rubber band
<br>selection, you can do it quite easily by setting the drag mode of the
<br>QGraphicsView. If you want some more customized selection behavior, I
<br>think you'll have to manually handle the mouse/keyboard events and
<br>call setSelected on the items you want to select.
<br><br>For the second question: It again depends on what behavior you want:
<br><br>1) If you want to have a "select tool" which the user must choose
<br>before he/she can select, then I guess you would implement it
<br>similarly to how you've implemented the host/switch/line tools that
<br>you've shown. You would have an elif for your select tool, where you
<br>let QGraphicsScene (the base class) handle the event, this will
<br>forward the event to the item (instead of it being swallowed by the
<br>scene event handler like you did, and the item will select itself.
<br><br>2) If you want your host/switch/line tools et.c to also double as
<br>selection tools (e.g. click outside an item will create a new item,
<br>while click on an item will select it), then you need to check if
<br>there's an item under the cursor when the click happens, and if there
<br>is, select it, otherwise go on with your current logic.
<br><br>This is all from memory, so better check the docs. But I hope it gets
<br>you started.
<br><br>Googling also gives a lot of hits about selection handling with
<br>QGraphicsScene/QGraphicsView.
<br><br>Elvis
<br><br>>
<br>>
<br>>
<br></div></div>> --
<br>> View this message in context: <a href="http://python.6.x6.nabble.com/How-to-select-and-test-if-a-QGraphicsItem-or-a-QGraphicsPixmapItem-has-been-selected-tp5189232p5189325.html" rel="nofollow" link="external" target="_blank">http://python.6.x6.nabble.com/How-to-select-and-test-if-a-QGraphicsItem-or-a-QGraphicsPixmapItem-has-been-selected-tp5189232p5189325.html</a><span class=""><br>> Sent from the PyQt mailing list archive at Nabble.com.
<br>> _______________________________________________
<br></span>> PyQt mailing list    <a href="http:///user/SendEmail.jtp?type=node&node=5189328&i=1" rel="nofollow" link="external" target="_blank">[hidden email]</a>
<br>> <a href="https://www.riverbankcomputing.com/mailman/listinfo/pyqt" rel="nofollow" link="external" target="_blank">https://www.riverbankcomputing.com/mailman/listinfo/pyqt</a><br>_______________________________________________
<br>PyQt mailing list    <a href="http:///user/SendEmail.jtp?type=node&node=5189328&i=2" rel="nofollow" link="external" target="_blank">[hidden email]</a>
<br><a href="https://www.riverbankcomputing.com/mailman/listinfo/pyqt" rel="nofollow" link="external" target="_blank">https://www.riverbankcomputing.com/mailman/listinfo/pyqt</a>

        
        
        
        <br>
        <br>
        <hr noshade size="1" color="#cccccc">
        <div style="color:#444;font:12px tahoma,geneva,helvetica,arial,sans-serif">
                <div style="font-weight:bold">If you reply to this email, your message will be added to the discussion below:</div>
                <a href="http://python.6.x6.nabble.com/How-to-select-and-test-if-a-QGraphicsItem-or-a-QGraphicsPixmapItem-has-been-selected-tp5189232p5189328.html" target="_blank" rel="nofollow" link="external">http://python.6.x6.nabble.com/How-to-select-and-test-if-a-QGraphicsItem-or-a-QGraphicsPixmapItem-has-been-selected-tp5189232p5189328.html</a>
        </div>
        <div style="color:#666;font:11px tahoma,geneva,helvetica,arial,sans-serif;margin-top:.4em;line-height:1.5em">
                
                To unsubscribe from How to select and test if a QGraphicsItem (or a QGraphicsPixmapItem) has been selected, <a href="" target="_blank" rel="nofollow" link="external">click here</a>.<br>
                <a href="http://python.6.x6.nabble.com/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml" rel="nofollow" style="font:9px serif" target="_blank" link="external">NAML</a>
        </div></blockquote></div><br></div>


        
        
        
<br/><hr align="left" width="300" />
View this message in context: <a href="http://python.6.x6.nabble.com/How-to-select-and-test-if-a-QGraphicsItem-or-a-QGraphicsPixmapItem-has-been-selected-tp5189232p5189412.html">Re: How to select and test if a QGraphicsItem (or a QGraphicsPixmapItem) has been selected</a><br/>
Sent from the <a href="http://python.6.x6.nabble.com/PyQt-f1792048.html">PyQt mailing list archive</a> at Nabble.com.<br/>