What's the meaning of the stdset attribute? It turns out that for the properties of my own custom widget Designer does not specify the stdset attribute (not quite sure why), and if stdset is missing or equals "1" pyuic reverts to the old behaviour of guessing the setter method's name (rather than using setProperty).
<br><br>Arve<br><br><div><span class="gmail_quote">On 10/7/07, <b class="gmail_sendername">Arve Knudsen</b> &lt;<a href="mailto:arve.knudsen@gmail.com">arve.knudsen@gmail.com</a>&gt; wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div><span class="e" id="q_1157a2a20d0db4ec_0">On 10/6/07, <b class="gmail_sendername">Phil Thompson</b> &lt;<a href="mailto:phil@riverbankcomputing.co.uk" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">
phil@riverbankcomputing.co.uk</a>&gt; wrote:</span></div><div><div><span class="e" id="q_1157a2a20d0db4ec_2"><span class="gmail_quote"></span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">

On Saturday 06 October 2007, Arve Knudsen wrote:<br>&gt; On 10/6/07, Phil Thompson &lt;<a href="mailto:phil@riverbankcomputing.co.uk" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">phil@riverbankcomputing.co.uk
</a>&gt; wrote:<br>&gt; &gt; On Saturday 06 October 2007, Arve Knudsen wrote:
<br>&gt; &gt; &gt; On 10/6/07, Phil Thompson &lt;<a href="mailto:phil@riverbankcomputing.co.uk" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">phil@riverbankcomputing.co.uk</a>&gt; wrote:<br>&gt; &gt; &gt; &gt; On Friday 05 October 2007, Arve Knudsen wrote:
<br>&gt; &gt; &gt; &gt; &gt; Hi
<br>&gt; &gt; &gt; &gt; &gt; I&#39;ve just written a Designer plugin in Python, which I have to say<br>&gt; &gt;<br>&gt; &gt; is<br>&gt; &gt;<br>&gt; &gt; &gt; &gt; very<br>&gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt; &gt; nice. However I discovered some surprising behaviour in pyuic. My
<br>&gt; &gt; &gt; &gt; &gt; widget contains Qt properties (defined using pyqtProperty), but the<br>&gt; &gt; &gt; &gt; &gt; generated<br>&gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt; code<br>&gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt; &gt; don&#39;t use the properties, instead it tries to use the underlying
<br>&gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt; methods!?<br>&gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt; &gt; I discovered this for the reason that I use a different naming<br>&gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt; convention
<br>&gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt; &gt; than pyuic apparently expected. For instance, I had a property<br>&gt; &gt;<br>&gt; &gt; &quot;value&quot;,<br>&gt; &gt;<br>&gt; &gt; &gt; &gt; for<br>&gt; &gt; &gt; &gt;
<br>&gt; &gt; &gt; &gt; &gt; which pyuic expected there to be a setter method &quot;setValue&quot;. I hope<br>&gt; &gt;<br>&gt; &gt; it<br>&gt; &gt;<br>&gt; &gt; &gt; &gt; &gt; isn&#39;t on purpose that pyuic tries to use underlying methods instead
<br>&gt; &gt;<br>&gt; &gt; of<br>&gt; &gt;<br>&gt; &gt; &gt; &gt; the<br>&gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt; &gt; properties themselves?<br>&gt; &gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt; &gt; I&#39;m using PyQt 4.3

 commercial edition.<br>&gt; &gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt; &gt; Thanks,<br>&gt; &gt; &gt; &gt; &gt; Arve<br>&gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt; If everything is working as it should then it depends on what you
<br>&gt; &gt; &gt; &gt; have called<br>&gt; &gt; &gt; &gt; the setter. If it begins with &quot;set&quot; then pyuic (and uic) should use<br>&gt; &gt; &gt; &gt; it directly and not use setProperty(). However this has probably not
<br>&gt; &gt; &gt; &gt; had<br>&gt; &gt;<br>&gt; &gt; a<br>&gt; &gt;<br>&gt; &gt; &gt; &gt; lot<br>&gt; &gt; &gt; &gt; of testing.<br>&gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt; What have you called your setter?<br>&gt; &gt; &gt;
<br>&gt; &gt; &gt; Let&#39;s say the property is called &quot;value&quot;. I called my setter<br>&gt; &gt; &gt; _set_value, pyuic inferred the setter&#39;s name to be setValue.<br>&gt; &gt; &gt;<br>&gt; &gt; &gt; Does uic behave differently to pyuic?
<br>&gt; &gt; &gt;<br>&gt; &gt; &gt;<br>&gt; &gt; &gt; I haven&#39;t used uic for some time, but this point is kind of moot since<br>&gt; &gt;<br>&gt; &gt; C++<br>&gt; &gt;<br>&gt; &gt; &gt; doesn&#39;t have properties while Python does :)
<br>&gt; &gt;<br>&gt; &gt; Qt/C++ does have properties.<br>&gt; &gt;<br>&gt; &gt; &gt; The point is that I can&#39;t see<br>&gt; &gt; &gt; that there is any reason for pyuic to try and use the setter method,<br>&gt; &gt;
<br>
&gt; &gt; when<br>&gt; &gt;<br>&gt; &gt; &gt; it can simply use the property (i.e., obj.value = something).<br>&gt; &gt;<br>&gt; &gt; Because it needs to have the same behaviour as uic. If it doesn&#39;t then it<br>&gt; &gt; is
<br>&gt; &gt; clearly a pyuic bug. If not then it may be a bug in the implementation of<br>&gt; &gt; pyqtProperty.<br>&gt;<br>&gt; I&#39;m not sure I follow you here, but I&#39;ll let you comment on my attached<br>&gt; example first.
<br>&gt;<br>&gt; Can you send me a .ui file?<br>&gt;<br>&gt;<br>&gt; Better yet, I&#39;ve attached a modified PyDemo example where the setZoom<br>&gt; method is renamed to _set_zoom (to mimic my naming convention) and a basic
<br>&gt; form using the widget. This illustrates the problem. There&#39;s no problem<br>&gt; modifying PyDemo&#39;s zoom property as it were another attribute, e.g.,<br>&gt; demo.zoom = 1, but the pyuic generated code insists on calling setZoom
<br>&gt; which isn&#39;t there.<br><br>It is fixed in tonight&#39;s snapshot. The fix is to call setProperty() (as uic<br>does). Setting the attribute directly would only work if the property was<br>defined using pyqtProperty, but pyuic cannot distinguish between those and
<br>ordinary Qt properties and so it has to assume the latter.</blockquote></span></div><div><br>Great, thanks for fixing this. I didn&#39;t consider that pyuic has to deal with both Qt and PyQt properties.<br><br>Arve<br>
</div><br></div>
<br>
</blockquote></div><br>