[prev in list] [next in list] [prev in thread] [next in thread] 

List:       pykde
Subject:    Re: QLayout error?
From:       RedHuli <redhuli.comments () gmail ! com>
Date:       2022-10-10 4:42:30
Message-ID: CACDNW2XnHJ6XsWz19kA8C=sg8EvyNiybHC5JT0WFm--Sr2vxAw () mail ! gmail ! com
[Download RAW message or body]

Hi Matic,

Does changing your move_widget function to the following have the desired
results you want?

def move_widget(self):
widget = self.layout().itemAt(2).widget()
self.layout().removeWidget(widget)
self.layout().insertWidget(4, widget)

Best,

Joshua Willman

On Sun, Oct 9, 2022 at 6:48 PM Phil Thompson <phil@riverbankcomputing.com>
wrote:

> On 09/10/2022 22:57, Matic Kukovec wrote:
> > Hi,
> >
> > My specs: Windows 10 x64, Python3.10 x64, PyQt6.3.1
> >
> > When clicking the button in the below example, a crash without a
> > traceback occurs:
> > import sys
> > from PyQt6.QtCore import *
> > from PyQt6.QtGui import *
> > from PyQt6.QtWidgets import *
> >
> > class TestWindow(QWidget):
> >     def __init__(self):
> >         super().__init__()
> >         self.setFixedSize(640, 480)
> >
> >         layout = QVBoxLayout(self)
> >         layout.setContentsMargins(0, 0, 0, 0)
> >         layout.setSpacing(0)
> >         self.setLayout(layout)
> >
> >         # Add widgets
> >         widgets = [
> >             ("red", "Red"),
> >             ("green", "Green"),
> >             ("blue", "Blue"),
> >             ("violet", "Violet"),
> >             ("black", "Black"),
> >             ("orange", "Orange"),
> >             ("olive", "Olive"),
> >             ("turquoise", "Turquoise"),
> >             ("white", "White"),
> >         ]
> >         for color, title in widgets:
> >             new_widget = QWidget()
> >             new_widget.setStyleSheet(f"background: {color};")
> >             layout.addWidget(new_widget)
> >
> >         # Add a re-arrange button
> >         new_button = QPushButton("MOVE WIDGET IN LAYOUT")
> >         new_button.clicked.connect(self.move_widget)
> >         layout.addWidget(new_button)
> >
> >     def move_widget(self):
> >         item = self.layout().takeAt(2)
> >         self.layout().insertItem(4, item)
> >
> > def main():
> >     app = QApplication(sys.argv)
> >     window = TestWindow()
> >     window.show()
> >     sys.exit(app.exec())
> >
> > if __name__ == "__main__":
> >     main()
> >
> > Is this bug, or am I doing something wrong?
> >
> > Regards,
> > Matic
>
> It's a bug - also in PyQt5.
>
> Thanks,
> Phil
>

[Attachment #3 (text/html)]

<div dir="ltr">Hi Matic,<div><br></div><div>Does changing your move_widget function \
to the following have the desired results you want?</div><div><br></div><div><div \
style="color:rgb(212,212,212);background-color:rgb(30,30,30);font-family:Menlo,Monaco,&quot;Courier \
New&quot;,monospace;font-size:12px;line-height:18px;white-space:pre"><div>    <span \
style="color:rgb(86,156,214)">def</span> <span \
style="color:rgb(220,220,170)">move_widget</span>(<span \
style="color:rgb(156,220,254)">self</span>):</div><div>        <span \
style="color:rgb(156,220,254)">widget</span> = <span \
style="color:rgb(156,220,254)">self</span>.<span \
style="color:rgb(220,220,170)">layout</span>().<span \
style="color:rgb(220,220,170)">itemAt</span>(<span \
style="color:rgb(181,206,168)">2</span>).<span \
style="color:rgb(220,220,170)">widget</span>()</div><div>        <span \
style="color:rgb(156,220,254)">self</span>.<span \
style="color:rgb(220,220,170)">layout</span>().<span \
style="color:rgb(220,220,170)">removeWidget</span>(<span \
style="color:rgb(156,220,254)">widget</span>)</div><div>        <span \
style="color:rgb(156,220,254)">self</span>.<span \
style="color:rgb(220,220,170)">layout</span>().insertWidget(<span \
style="color:rgb(181,206,168)">4</span>, <span \
style="color:rgb(156,220,254)">widget</span>)</div></div></div><div><br></div><div>Best,</div><div><br></div><div>Joshua \
Willman</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On \
Sun, Oct 9, 2022 at 6:48 PM Phil Thompson &lt;<a \
href="mailto:phil@riverbankcomputing.com">phil@riverbankcomputing.com</a>&gt; \
wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px \
0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">On \
09/10/2022 22:57, Matic Kukovec wrote:<br> &gt; Hi,<br>
&gt; <br>
&gt; My specs: Windows 10 x64, Python3.10 x64, PyQt6.3.1<br>
&gt; <br>
&gt; When clicking the button in the below example, a crash without a<br>
&gt; traceback occurs:<br>
&gt; import sys<br>
&gt; from PyQt6.QtCore import *<br>
&gt; from PyQt6.QtGui import *<br>
&gt; from PyQt6.QtWidgets import *<br>
&gt; <br>
&gt; class TestWindow(QWidget):<br>
&gt;        def __init__(self):<br>
&gt;              super().__init__()<br>
&gt;              self.setFixedSize(640, 480)<br>
&gt; <br>
&gt;              layout = QVBoxLayout(self)<br>
&gt;              layout.setContentsMargins(0, 0, 0, 0)<br>
&gt;              layout.setSpacing(0)<br>
&gt;              self.setLayout(layout)<br>
&gt; <br>
&gt;              # Add widgets<br>
&gt;              widgets = [<br>
&gt;                    (&quot;red&quot;, &quot;Red&quot;),<br>
&gt;                    (&quot;green&quot;, &quot;Green&quot;),<br>
&gt;                    (&quot;blue&quot;, &quot;Blue&quot;),<br>
&gt;                    (&quot;violet&quot;, &quot;Violet&quot;),<br>
&gt;                    (&quot;black&quot;, &quot;Black&quot;),<br>
&gt;                    (&quot;orange&quot;, &quot;Orange&quot;),<br>
&gt;                    (&quot;olive&quot;, &quot;Olive&quot;),<br>
&gt;                    (&quot;turquoise&quot;, &quot;Turquoise&quot;),<br>
&gt;                    (&quot;white&quot;, &quot;White&quot;),<br>
&gt;              ]<br>
&gt;              for color, title in widgets:<br>
&gt;                    new_widget = QWidget()<br>
&gt;                    new_widget.setStyleSheet(f&quot;background: \
{color};&quot;)<br> &gt;                    layout.addWidget(new_widget)<br>
&gt; <br>
&gt;              # Add a re-arrange button<br>
&gt;              new_button = QPushButton(&quot;MOVE WIDGET IN LAYOUT&quot;)<br>
&gt;              new_button.clicked.connect(self.move_widget)<br>
&gt;              layout.addWidget(new_button)<br>
&gt; <br>
&gt;        def move_widget(self):<br>
&gt;              item = self.layout().takeAt(2)<br>
&gt;              self.layout().insertItem(4, item)<br>
&gt; <br>
&gt; def main():<br>
&gt;        app = QApplication(sys.argv)<br>
&gt;        window = TestWindow()<br>
&gt;        window.show()<br>
&gt;        sys.exit(app.exec())<br>
&gt; <br>
&gt; if __name__ == &quot;__main__&quot;:<br>
&gt;        main()<br>
&gt; <br>
&gt; Is this bug, or am I doing something wrong?<br>
&gt; <br>
&gt; Regards,<br>
&gt; Matic<br>
<br>
It&#39;s a bug - also in PyQt5.<br>
<br>
Thanks,<br>
Phil<br>
</blockquote></div>



[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic