Re: [QGIS-Developer] Testing a ComboBox with a QCompleter using QTest

2020-03-01 Thread Larry Shaffer
Hi Jo,

Glad to hear it is working for you now! I also found the UI testing of this
widget to be quite finicky.

Regards,

Larry

On Sat, Feb 29, 2020 at 05:19 Jo  wrote:

> Hi Larry,
>
> I am rather ashamed... I was sending these mouseclicks and keyclicks to a
> combobox on another frame, that was invisible at the time. They all have
> these codes, not actual names to identify them with.
>
> Now it works, thank you so much for your help with this!
>
> Jo
>
> On Sat, Feb 29, 2020 at 10:08 AM Jo  wrote:
>
>> This is the code as I have it at the moment:
>>
>> cb = self.form.dockwidget.widget['sc_510_002']
>> QTest.mouseClick(cb.lineEdit(), Qt.LeftButton)
>> QTest.keyClicks(cb.lineEdit(), '9000')
>> QTest.qWait(1000)
>> completer_popup = cb.completer().popup()
>> indx = completer_popup.model().index(0, 0)
>> print(indx.data())
>> indx_center = completer_popup.visualRect(indx).center()
>> QTest.mouseMove(completer_popup, pos=indx_center, delay=250)
>>
>> I had to change the completer to  cb.completer()
>>
>> Jo
>>
>>
>> On Sat, Feb 29, 2020 at 9:58 AM Jo  wrote:
>>
>>> Hi Larry,
>>>
>>> Thank you so much for that! It all works as you describe, except that my
>>> QGIS doesn't show that completer where one would expect it (under the
>>> combobox), but rather at position 0,0 of the widget it is in. So that's
>>> odd. The mouse pointer is moved to the middle of the displaced completer
>>> widget, so your code works fine.
>>>
>>> The other thing that doesn't work as expected, is that the mouse click
>>> doesn't transfer the entry to the combobox.
>>>
>>> When I don't let the script do the mouseclick and I do it myself, it
>>> also doesn't work. (not executing the last mouseclick of your script and
>>> then doing it manually)
>>>
>>> When I do arrow up or page up and then enter, it also doesn't work.
>>>
>>> When I start the whole test manually, the popup appears where one would
>>> expect it and it's possible to type in the combobox's lineEdit and then
>>> mouseclick to select the value from the completer.
>>>
>>> Normal:
>>>
>>> [image: image.png]
>>>
>>> This is what happens when run from the script:
>>>
>>> [image: image.png]
>>> So that's weird, as if it didn't know what combobox it belongs to. The
>>> mousepointer is at the correct position though. Clicking it manually has no
>>> effect either.
>>>
>>> Jo
>>>
>>> On Fri, Feb 28, 2020 at 10:17 PM Larry Shaffer 
>>> wrote:
>>>
 Hello Jo,

 Try this:

 QTest.mouseClick(cb.lineEdit(), Qt.LeftButton)
 QTest.keyClicks(cb.lineEdit(), '9000')
 QTest.qWait(1000)
 lv = completer.popup()
 indx = lv.model().index(0, 0)
 print(indx.data())
 indx_center = lv.visualRect(indx).center()
 QTest.mouseMove(
 lv,
 pos=indx_center,
 delay=250)
 QTest.mouseClick(
 lv.viewport(),
 Qt.LeftButton,
 pos=indx_center,
 delay=250)

 Summary:

 - QTest.mouseClick is sent to the combobox's QLineEdit, to set focus
 - QTest.keyClicks should trigger your completer's list view
 - QTest.qWait waits for the completer to show up (if long list, etc.)
 - Instead of searching for QListView of QComboBox, ask for the
 completer's popup()
 - Get the first index of the list view's model
 - Print the index's data (text) to Python Console to verify it is the
 right index for test
 - Find index's visual center, in global coordinates
 - Move the mouse there, so you can visually verify where the click is
 going to occur
 - Finally, click to auto-fill line edit with item from completer's list

 Tested in QGIS 3.10.3 on macOS 10.15.3 under Python 3.8 and Qt 5.12.5.

 Regards,

 Larry Shaffer
 Dakota Cartography
 Black Hills, South Dakota

 On Fri, Feb 28, 2020 at 1:51 AM Alessandro Pasotti 
 wrote:

> I don't see anything related to QGIS in your issue, you should
> probably ask on a Qt/PyQt mailing list.
>
> On Fri, Feb 28, 2020 at 9:45 AM Jo  wrote:
> >
> > Hi,
> >
> > I'm really stuck on this.
> >
> > I'm trying to test a combobox with a completer:
> >
> > When I do these manually, they work:
> >
> > cb = self.form.dockwidget.widget['sc_510_002']
> > QTest.keyClicks(cb, '9000')
> > QTest.qWait(1000)
> > QTest.keyClick(cb, Qt.Key_PageUp, Qt.NoModifier, 500)
> > QTest.keyClick(cb, Qt.Key_Enter, Qt.NoModifier, 500)
> >
> > When I want to simulate them with the above commands, all I see is
> the popup.
> >
> > I also tried the following:
> >
> > cb = self.form.dockwidget.widget['sc_510_002']
> > QTest.keyClicks(cb, '9000')
> > lv = cb.findChild(QListView)
> > QTest.qWait(1000)
> > QTest.mouseClick(lv.viewport(), Qt.LeftButton, 0,
> lv.

Re: [QGIS-Developer] Testing a ComboBox with a QCompleter using QTest

2020-02-29 Thread Jo
Hi Larry,

I am rather ashamed... I was sending these mouseclicks and keyclicks to a
combobox on another frame, that was invisible at the time. They all have
these codes, not actual names to identify them with.

Now it works, thank you so much for your help with this!

Jo

On Sat, Feb 29, 2020 at 10:08 AM Jo  wrote:

> This is the code as I have it at the moment:
>
> cb = self.form.dockwidget.widget['sc_510_002']
> QTest.mouseClick(cb.lineEdit(), Qt.LeftButton)
> QTest.keyClicks(cb.lineEdit(), '9000')
> QTest.qWait(1000)
> completer_popup = cb.completer().popup()
> indx = completer_popup.model().index(0, 0)
> print(indx.data())
> indx_center = completer_popup.visualRect(indx).center()
> QTest.mouseMove(completer_popup, pos=indx_center, delay=250)
>
> I had to change the completer to  cb.completer()
>
> Jo
>
>
> On Sat, Feb 29, 2020 at 9:58 AM Jo  wrote:
>
>> Hi Larry,
>>
>> Thank you so much for that! It all works as you describe, except that my
>> QGIS doesn't show that completer where one would expect it (under the
>> combobox), but rather at position 0,0 of the widget it is in. So that's
>> odd. The mouse pointer is moved to the middle of the displaced completer
>> widget, so your code works fine.
>>
>> The other thing that doesn't work as expected, is that the mouse click
>> doesn't transfer the entry to the combobox.
>>
>> When I don't let the script do the mouseclick and I do it myself, it also
>> doesn't work. (not executing the last mouseclick of your script and then
>> doing it manually)
>>
>> When I do arrow up or page up and then enter, it also doesn't work.
>>
>> When I start the whole test manually, the popup appears where one would
>> expect it and it's possible to type in the combobox's lineEdit and then
>> mouseclick to select the value from the completer.
>>
>> Normal:
>>
>> [image: image.png]
>>
>> This is what happens when run from the script:
>>
>> [image: image.png]
>> So that's weird, as if it didn't know what combobox it belongs to. The
>> mousepointer is at the correct position though. Clicking it manually has no
>> effect either.
>>
>> Jo
>>
>> On Fri, Feb 28, 2020 at 10:17 PM Larry Shaffer 
>> wrote:
>>
>>> Hello Jo,
>>>
>>> Try this:
>>>
>>> QTest.mouseClick(cb.lineEdit(), Qt.LeftButton)
>>> QTest.keyClicks(cb.lineEdit(), '9000')
>>> QTest.qWait(1000)
>>> lv = completer.popup()
>>> indx = lv.model().index(0, 0)
>>> print(indx.data())
>>> indx_center = lv.visualRect(indx).center()
>>> QTest.mouseMove(
>>> lv,
>>> pos=indx_center,
>>> delay=250)
>>> QTest.mouseClick(
>>> lv.viewport(),
>>> Qt.LeftButton,
>>> pos=indx_center,
>>> delay=250)
>>>
>>> Summary:
>>>
>>> - QTest.mouseClick is sent to the combobox's QLineEdit, to set focus
>>> - QTest.keyClicks should trigger your completer's list view
>>> - QTest.qWait waits for the completer to show up (if long list, etc.)
>>> - Instead of searching for QListView of QComboBox, ask for the
>>> completer's popup()
>>> - Get the first index of the list view's model
>>> - Print the index's data (text) to Python Console to verify it is the
>>> right index for test
>>> - Find index's visual center, in global coordinates
>>> - Move the mouse there, so you can visually verify where the click is
>>> going to occur
>>> - Finally, click to auto-fill line edit with item from completer's list
>>>
>>> Tested in QGIS 3.10.3 on macOS 10.15.3 under Python 3.8 and Qt 5.12.5.
>>>
>>> Regards,
>>>
>>> Larry Shaffer
>>> Dakota Cartography
>>> Black Hills, South Dakota
>>>
>>> On Fri, Feb 28, 2020 at 1:51 AM Alessandro Pasotti 
>>> wrote:
>>>
 I don't see anything related to QGIS in your issue, you should
 probably ask on a Qt/PyQt mailing list.

 On Fri, Feb 28, 2020 at 9:45 AM Jo  wrote:
 >
 > Hi,
 >
 > I'm really stuck on this.
 >
 > I'm trying to test a combobox with a completer:
 >
 > When I do these manually, they work:
 >
 > cb = self.form.dockwidget.widget['sc_510_002']
 > QTest.keyClicks(cb, '9000')
 > QTest.qWait(1000)
 > QTest.keyClick(cb, Qt.Key_PageUp, Qt.NoModifier, 500)
 > QTest.keyClick(cb, Qt.Key_Enter, Qt.NoModifier, 500)
 >
 > When I want to simulate them with the above commands, all I see is
 the popup.
 >
 > I also tried the following:
 >
 > cb = self.form.dockwidget.widget['sc_510_002']
 > QTest.keyClicks(cb, '9000')
 > lv = cb.findChild(QListView)
 > QTest.qWait(1000)
 > QTest.mouseClick(lv.viewport(), Qt.LeftButton, 0,
 lv.visualRect).center())
 >
 > Based on what I found here:
 >
 >
 https://gist.github.com/peteristhegreat/cbd8eaa0e565d0b82dbfb5c7fdc61c8d
 >
 > and here:
 >
 > https://vicrucann.github.io/tutorials/qttest-signals-qtreewidget/
 >
 > I was glad I managed to translate it from C, but n

Re: [QGIS-Developer] Testing a ComboBox with a QCompleter using QTest

2020-02-29 Thread Jo
This is the code as I have it at the moment:

cb = self.form.dockwidget.widget['sc_510_002']
QTest.mouseClick(cb.lineEdit(), Qt.LeftButton)
QTest.keyClicks(cb.lineEdit(), '9000')
QTest.qWait(1000)
completer_popup = cb.completer().popup()
indx = completer_popup.model().index(0, 0)
print(indx.data())
indx_center = completer_popup.visualRect(indx).center()
QTest.mouseMove(completer_popup, pos=indx_center, delay=250)

I had to change the completer to  cb.completer()

Jo


On Sat, Feb 29, 2020 at 9:58 AM Jo  wrote:

> Hi Larry,
>
> Thank you so much for that! It all works as you describe, except that my
> QGIS doesn't show that completer where one would expect it (under the
> combobox), but rather at position 0,0 of the widget it is in. So that's
> odd. The mouse pointer is moved to the middle of the displaced completer
> widget, so your code works fine.
>
> The other thing that doesn't work as expected, is that the mouse click
> doesn't transfer the entry to the combobox.
>
> When I don't let the script do the mouseclick and I do it myself, it also
> doesn't work. (not executing the last mouseclick of your script and then
> doing it manually)
>
> When I do arrow up or page up and then enter, it also doesn't work.
>
> When I start the whole test manually, the popup appears where one would
> expect it and it's possible to type in the combobox's lineEdit and then
> mouseclick to select the value from the completer.
>
> Normal:
>
> [image: image.png]
>
> This is what happens when run from the script:
>
> [image: image.png]
> So that's weird, as if it didn't know what combobox it belongs to. The
> mousepointer is at the correct position though. Clicking it manually has no
> effect either.
>
> Jo
>
> On Fri, Feb 28, 2020 at 10:17 PM Larry Shaffer 
> wrote:
>
>> Hello Jo,
>>
>> Try this:
>>
>> QTest.mouseClick(cb.lineEdit(), Qt.LeftButton)
>> QTest.keyClicks(cb.lineEdit(), '9000')
>> QTest.qWait(1000)
>> lv = completer.popup()
>> indx = lv.model().index(0, 0)
>> print(indx.data())
>> indx_center = lv.visualRect(indx).center()
>> QTest.mouseMove(
>> lv,
>> pos=indx_center,
>> delay=250)
>> QTest.mouseClick(
>> lv.viewport(),
>> Qt.LeftButton,
>> pos=indx_center,
>> delay=250)
>>
>> Summary:
>>
>> - QTest.mouseClick is sent to the combobox's QLineEdit, to set focus
>> - QTest.keyClicks should trigger your completer's list view
>> - QTest.qWait waits for the completer to show up (if long list, etc.)
>> - Instead of searching for QListView of QComboBox, ask for the
>> completer's popup()
>> - Get the first index of the list view's model
>> - Print the index's data (text) to Python Console to verify it is the
>> right index for test
>> - Find index's visual center, in global coordinates
>> - Move the mouse there, so you can visually verify where the click is
>> going to occur
>> - Finally, click to auto-fill line edit with item from completer's list
>>
>> Tested in QGIS 3.10.3 on macOS 10.15.3 under Python 3.8 and Qt 5.12.5.
>>
>> Regards,
>>
>> Larry Shaffer
>> Dakota Cartography
>> Black Hills, South Dakota
>>
>> On Fri, Feb 28, 2020 at 1:51 AM Alessandro Pasotti 
>> wrote:
>>
>>> I don't see anything related to QGIS in your issue, you should
>>> probably ask on a Qt/PyQt mailing list.
>>>
>>> On Fri, Feb 28, 2020 at 9:45 AM Jo  wrote:
>>> >
>>> > Hi,
>>> >
>>> > I'm really stuck on this.
>>> >
>>> > I'm trying to test a combobox with a completer:
>>> >
>>> > When I do these manually, they work:
>>> >
>>> > cb = self.form.dockwidget.widget['sc_510_002']
>>> > QTest.keyClicks(cb, '9000')
>>> > QTest.qWait(1000)
>>> > QTest.keyClick(cb, Qt.Key_PageUp, Qt.NoModifier, 500)
>>> > QTest.keyClick(cb, Qt.Key_Enter, Qt.NoModifier, 500)
>>> >
>>> > When I want to simulate them with the above commands, all I see is the
>>> popup.
>>> >
>>> > I also tried the following:
>>> >
>>> > cb = self.form.dockwidget.widget['sc_510_002']
>>> > QTest.keyClicks(cb, '9000')
>>> > lv = cb.findChild(QListView)
>>> > QTest.qWait(1000)
>>> > QTest.mouseClick(lv.viewport(), Qt.LeftButton, 0,
>>> lv.visualRect).center())
>>> >
>>> > Based on what I found here:
>>> >
>>> >
>>> https://gist.github.com/peteristhegreat/cbd8eaa0e565d0b82dbfb5c7fdc61c8d
>>> >
>>> > and here:
>>> >
>>> > https://vicrucann.github.io/tutorials/qttest-signals-qtreewidget/
>>> >
>>> > I was glad I managed to translate it from C, but no joy.
>>> >
>>> > Jo
>>> >
>>> > On Sat, Feb 22, 2020 at 10:55 AM Jo  wrote:
>>> >>
>>> >> Hi,
>>> >>
>>> >> I would love to add some testing code to my ever more complex
>>> application.
>>> >>
>>> >> Somehow I'm not succeeding though, these are my attempts:
>>> >>
>>> >> #form.dockwidget.widget['sc_510_002'].setCurrentIndex(5) # , doing it
>>> directly doesn't work
>>> >> QTest.keyClicks(form.dockwidget.widget['sc_510_002'], '9000 Gent',
>>> Qt.NoModifier, 50) # this w

Re: [QGIS-Developer] Testing a ComboBox with a QCompleter using QTest

2020-02-29 Thread Jo
Hi Larry,

Thank you so much for that! It all works as you describe, except that my
QGIS doesn't show that completer where one would expect it (under the
combobox), but rather at position 0,0 of the widget it is in. So that's
odd. The mouse pointer is moved to the middle of the displaced completer
widget, so your code works fine.

The other thing that doesn't work as expected, is that the mouse click
doesn't transfer the entry to the combobox.

When I don't let the script do the mouseclick and I do it myself, it also
doesn't work. (not executing the last mouseclick of your script and then
doing it manually)

When I do arrow up or page up and then enter, it also doesn't work.

When I start the whole test manually, the popup appears where one would
expect it and it's possible to type in the combobox's lineEdit and then
mouseclick to select the value from the completer.

Normal:

[image: image.png]

This is what happens when run from the script:

[image: image.png]
So that's weird, as if it didn't know what combobox it belongs to. The
mousepointer is at the correct position though. Clicking it manually has no
effect either.

Jo

On Fri, Feb 28, 2020 at 10:17 PM Larry Shaffer 
wrote:

> Hello Jo,
>
> Try this:
>
> QTest.mouseClick(cb.lineEdit(), Qt.LeftButton)
> QTest.keyClicks(cb.lineEdit(), '9000')
> QTest.qWait(1000)
> lv = completer.popup()
> indx = lv.model().index(0, 0)
> print(indx.data())
> indx_center = lv.visualRect(indx).center()
> QTest.mouseMove(
> lv,
> pos=indx_center,
> delay=250)
> QTest.mouseClick(
> lv.viewport(),
> Qt.LeftButton,
> pos=indx_center,
> delay=250)
>
> Summary:
>
> - QTest.mouseClick is sent to the combobox's QLineEdit, to set focus
> - QTest.keyClicks should trigger your completer's list view
> - QTest.qWait waits for the completer to show up (if long list, etc.)
> - Instead of searching for QListView of QComboBox, ask for the completer's
> popup()
> - Get the first index of the list view's model
> - Print the index's data (text) to Python Console to verify it is the
> right index for test
> - Find index's visual center, in global coordinates
> - Move the mouse there, so you can visually verify where the click is
> going to occur
> - Finally, click to auto-fill line edit with item from completer's list
>
> Tested in QGIS 3.10.3 on macOS 10.15.3 under Python 3.8 and Qt 5.12.5.
>
> Regards,
>
> Larry Shaffer
> Dakota Cartography
> Black Hills, South Dakota
>
> On Fri, Feb 28, 2020 at 1:51 AM Alessandro Pasotti 
> wrote:
>
>> I don't see anything related to QGIS in your issue, you should
>> probably ask on a Qt/PyQt mailing list.
>>
>> On Fri, Feb 28, 2020 at 9:45 AM Jo  wrote:
>> >
>> > Hi,
>> >
>> > I'm really stuck on this.
>> >
>> > I'm trying to test a combobox with a completer:
>> >
>> > When I do these manually, they work:
>> >
>> > cb = self.form.dockwidget.widget['sc_510_002']
>> > QTest.keyClicks(cb, '9000')
>> > QTest.qWait(1000)
>> > QTest.keyClick(cb, Qt.Key_PageUp, Qt.NoModifier, 500)
>> > QTest.keyClick(cb, Qt.Key_Enter, Qt.NoModifier, 500)
>> >
>> > When I want to simulate them with the above commands, all I see is the
>> popup.
>> >
>> > I also tried the following:
>> >
>> > cb = self.form.dockwidget.widget['sc_510_002']
>> > QTest.keyClicks(cb, '9000')
>> > lv = cb.findChild(QListView)
>> > QTest.qWait(1000)
>> > QTest.mouseClick(lv.viewport(), Qt.LeftButton, 0,
>> lv.visualRect).center())
>> >
>> > Based on what I found here:
>> >
>> >
>> https://gist.github.com/peteristhegreat/cbd8eaa0e565d0b82dbfb5c7fdc61c8d
>> >
>> > and here:
>> >
>> > https://vicrucann.github.io/tutorials/qttest-signals-qtreewidget/
>> >
>> > I was glad I managed to translate it from C, but no joy.
>> >
>> > Jo
>> >
>> > On Sat, Feb 22, 2020 at 10:55 AM Jo  wrote:
>> >>
>> >> Hi,
>> >>
>> >> I would love to add some testing code to my ever more complex
>> application.
>> >>
>> >> Somehow I'm not succeeding though, these are my attempts:
>> >>
>> >> #form.dockwidget.widget['sc_510_002'].setCurrentIndex(5) # , doing it
>> directly doesn't work
>> >> QTest.keyClicks(form.dockwidget.widget['sc_510_002'], '9000 Gent',
>> Qt.NoModifier, 50) # this works, a popup appears
>> >> QTest.keyClick(form.dockwidget.widget['sc_510_002'], Qt.Key_Enter,
>> Qt.NoModifier, 500)
>> >> QTest.keyClick(form.dockwidget.widget['sc_510_002'], Qt.Key_Tab,
>> Qt.NoModifier, 500)
>> >> #QTest.keyClick(form.dockwidget.widget['sc_510_002'].completer,
>> Qt.Key_Down, Qt.NoModifier, 500)
>> >> #print(dir(form.dockwidget.widget['sc_510_002'].completer().widget()))
>> >> #form.dockwidget.widget['sc_510_002'].completer().setCurrentRow(0)
>> >>
>> #QTest.keyClick(form.dockwidget.widget['sc_510_002'].completer().widget().lineEdit(),
>> Qt.Key_Enter, Qt.NoModifier, 500)
>> >> #form.dockwidget.widget['sc_510_002'].setEditText('1000 Brussel')
>> >>
>> >> The popup is the completer, I suppose, so I also tried to send
>> keyst

Re: [QGIS-Developer] Testing a ComboBox with a QCompleter using QTest

2020-02-28 Thread Larry Shaffer
Hello Jo,

Try this:

QTest.mouseClick(cb.lineEdit(), Qt.LeftButton)
QTest.keyClicks(cb.lineEdit(), '9000')
QTest.qWait(1000)
lv = completer.popup()
indx = lv.model().index(0, 0)
print(indx.data())
indx_center = lv.visualRect(indx).center()
QTest.mouseMove(
lv,
pos=indx_center,
delay=250)
QTest.mouseClick(
lv.viewport(),
Qt.LeftButton,
pos=indx_center,
delay=250)

Summary:

- QTest.mouseClick is sent to the combobox's QLineEdit, to set focus
- QTest.keyClicks should trigger your completer's list view
- QTest.qWait waits for the completer to show up (if long list, etc.)
- Instead of searching for QListView of QComboBox, ask for the completer's
popup()
- Get the first index of the list view's model
- Print the index's data (text) to Python Console to verify it is the right
index for test
- Find index's visual center, in global coordinates
- Move the mouse there, so you can visually verify where the click is going
to occur
- Finally, click to auto-fill line edit with item from completer's list

Tested in QGIS 3.10.3 on macOS 10.15.3 under Python 3.8 and Qt 5.12.5.

Regards,

Larry Shaffer
Dakota Cartography
Black Hills, South Dakota

On Fri, Feb 28, 2020 at 1:51 AM Alessandro Pasotti 
wrote:

> I don't see anything related to QGIS in your issue, you should
> probably ask on a Qt/PyQt mailing list.
>
> On Fri, Feb 28, 2020 at 9:45 AM Jo  wrote:
> >
> > Hi,
> >
> > I'm really stuck on this.
> >
> > I'm trying to test a combobox with a completer:
> >
> > When I do these manually, they work:
> >
> > cb = self.form.dockwidget.widget['sc_510_002']
> > QTest.keyClicks(cb, '9000')
> > QTest.qWait(1000)
> > QTest.keyClick(cb, Qt.Key_PageUp, Qt.NoModifier, 500)
> > QTest.keyClick(cb, Qt.Key_Enter, Qt.NoModifier, 500)
> >
> > When I want to simulate them with the above commands, all I see is the
> popup.
> >
> > I also tried the following:
> >
> > cb = self.form.dockwidget.widget['sc_510_002']
> > QTest.keyClicks(cb, '9000')
> > lv = cb.findChild(QListView)
> > QTest.qWait(1000)
> > QTest.mouseClick(lv.viewport(), Qt.LeftButton, 0,
> lv.visualRect).center())
> >
> > Based on what I found here:
> >
> > https://gist.github.com/peteristhegreat/cbd8eaa0e565d0b82dbfb5c7fdc61c8d
> >
> > and here:
> >
> > https://vicrucann.github.io/tutorials/qttest-signals-qtreewidget/
> >
> > I was glad I managed to translate it from C, but no joy.
> >
> > Jo
> >
> > On Sat, Feb 22, 2020 at 10:55 AM Jo  wrote:
> >>
> >> Hi,
> >>
> >> I would love to add some testing code to my ever more complex
> application.
> >>
> >> Somehow I'm not succeeding though, these are my attempts:
> >>
> >> #form.dockwidget.widget['sc_510_002'].setCurrentIndex(5) # , doing it
> directly doesn't work
> >> QTest.keyClicks(form.dockwidget.widget['sc_510_002'], '9000 Gent',
> Qt.NoModifier, 50) # this works, a popup appears
> >> QTest.keyClick(form.dockwidget.widget['sc_510_002'], Qt.Key_Enter,
> Qt.NoModifier, 500)
> >> QTest.keyClick(form.dockwidget.widget['sc_510_002'], Qt.Key_Tab,
> Qt.NoModifier, 500)
> >> #QTest.keyClick(form.dockwidget.widget['sc_510_002'].completer,
> Qt.Key_Down, Qt.NoModifier, 500)
> >> #print(dir(form.dockwidget.widget['sc_510_002'].completer().widget()))
> >> #form.dockwidget.widget['sc_510_002'].completer().setCurrentRow(0)
> >>
> #QTest.keyClick(form.dockwidget.widget['sc_510_002'].completer().widget().lineEdit(),
> Qt.Key_Enter, Qt.NoModifier, 500)
> >> #form.dockwidget.widget['sc_510_002'].setEditText('1000 Brussel')
> >>
> >> The popup is the completer, I suppose, so I also tried to send
> keystrokes to that, but no luck.
> >>
> >> This is the method I use to add the completer to the QComboBox:
> >>
> >> def add_completer(self, items):
> >> self.setEditable(True)
> >> self.setInsertPolicy(0)
> >> completer = QCompleter(items, self)
> >> completer.setFilterMode(Qt.MatchContains)
> >> completer.setCaseSensitivity(False)
> >> self.setCompleter(completer)
> >> self.setStyleSheet('QScrollBar: vertical {width: 16px;}')
> >
> > ___
> > QGIS-Developer mailing list
> > QGIS-Developer@lists.osgeo.org
> > List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer
> > Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer
>
>
>
> --
> Alessandro Pasotti
> w3:   www.itopen.it
> ___
> QGIS-Developer mailing list
> QGIS-Developer@lists.osgeo.org
> List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer
> Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer
___
QGIS-Developer mailing list
QGIS-Developer@lists.osgeo.org
List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer
Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer

Re: [QGIS-Developer] Testing a ComboBox with a QCompleter using QTest

2020-02-28 Thread Alessandro Pasotti
I don't see anything related to QGIS in your issue, you should
probably ask on a Qt/PyQt mailing list.

On Fri, Feb 28, 2020 at 9:45 AM Jo  wrote:
>
> Hi,
>
> I'm really stuck on this.
>
> I'm trying to test a combobox with a completer:
>
> When I do these manually, they work:
>
> cb = self.form.dockwidget.widget['sc_510_002']
> QTest.keyClicks(cb, '9000')
> QTest.qWait(1000)
> QTest.keyClick(cb, Qt.Key_PageUp, Qt.NoModifier, 500)
> QTest.keyClick(cb, Qt.Key_Enter, Qt.NoModifier, 500)
>
> When I want to simulate them with the above commands, all I see is the popup.
>
> I also tried the following:
>
> cb = self.form.dockwidget.widget['sc_510_002']
> QTest.keyClicks(cb, '9000')
> lv = cb.findChild(QListView)
> QTest.qWait(1000)
> QTest.mouseClick(lv.viewport(), Qt.LeftButton, 0, 
> lv.visualRect).center())
>
> Based on what I found here:
>
> https://gist.github.com/peteristhegreat/cbd8eaa0e565d0b82dbfb5c7fdc61c8d
>
> and here:
>
> https://vicrucann.github.io/tutorials/qttest-signals-qtreewidget/
>
> I was glad I managed to translate it from C, but no joy.
>
> Jo
>
> On Sat, Feb 22, 2020 at 10:55 AM Jo  wrote:
>>
>> Hi,
>>
>> I would love to add some testing code to my ever more complex application.
>>
>> Somehow I'm not succeeding though, these are my attempts:
>>
>> #form.dockwidget.widget['sc_510_002'].setCurrentIndex(5) # , doing it 
>> directly doesn't work
>> QTest.keyClicks(form.dockwidget.widget['sc_510_002'], '9000 Gent', 
>> Qt.NoModifier, 50) # this works, a popup appears
>> QTest.keyClick(form.dockwidget.widget['sc_510_002'], Qt.Key_Enter, 
>> Qt.NoModifier, 500)
>> QTest.keyClick(form.dockwidget.widget['sc_510_002'], Qt.Key_Tab, 
>> Qt.NoModifier, 500)
>> #QTest.keyClick(form.dockwidget.widget['sc_510_002'].completer, Qt.Key_Down, 
>> Qt.NoModifier, 500)
>> #print(dir(form.dockwidget.widget['sc_510_002'].completer().widget()))
>> #form.dockwidget.widget['sc_510_002'].completer().setCurrentRow(0)
>> #QTest.keyClick(form.dockwidget.widget['sc_510_002'].completer().widget().lineEdit(),
>>  Qt.Key_Enter, Qt.NoModifier, 500)
>> #form.dockwidget.widget['sc_510_002'].setEditText('1000 Brussel')
>>
>> The popup is the completer, I suppose, so I also tried to send keystrokes to 
>> that, but no luck.
>>
>> This is the method I use to add the completer to the QComboBox:
>>
>> def add_completer(self, items):
>> self.setEditable(True)
>> self.setInsertPolicy(0)
>> completer = QCompleter(items, self)
>> completer.setFilterMode(Qt.MatchContains)
>> completer.setCaseSensitivity(False)
>> self.setCompleter(completer)
>> self.setStyleSheet('QScrollBar: vertical {width: 16px;}')
>
> ___
> QGIS-Developer mailing list
> QGIS-Developer@lists.osgeo.org
> List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer
> Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer



-- 
Alessandro Pasotti
w3:   www.itopen.it
___
QGIS-Developer mailing list
QGIS-Developer@lists.osgeo.org
List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer
Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer

Re: [QGIS-Developer] Testing a ComboBox with a QCompleter using QTest

2020-02-28 Thread Jo
Hi,

I'm really stuck on this.

I'm trying to test a combobox with a completer:

When I do these manually, they work:

cb = self.form.dockwidget.widget['sc_510_002']
QTest.keyClicks(cb, '9000')
QTest.qWait(1000)
QTest.keyClick(cb, Qt.Key_PageUp, Qt.NoModifier, 500)
QTest.keyClick(cb, Qt.Key_Enter, Qt.NoModifier, 500)

When I want to simulate them with the above commands, all I see is the
popup.

I also tried the following:

cb = self.form.dockwidget.widget['sc_510_002']
QTest.keyClicks(cb, '9000')
lv = cb.findChild(QListView)
QTest.qWait(1000)
QTest.mouseClick(lv.viewport(), Qt.LeftButton, 0,
lv.visualRect).center())

Based on what I found here:

https://gist.github.com/peteristhegreat/cbd8eaa0e565d0b82dbfb5c7fdc61c8d

and here:

https://vicrucann.github.io/tutorials/qttest-signals-qtreewidget/

I was glad I managed to translate it from C, but no joy.

Jo

On Sat, Feb 22, 2020 at 10:55 AM Jo  wrote:

> Hi,
>
> I would love to add some testing code to my ever more complex application.
>
> Somehow I'm not succeeding though, these are my attempts:
>
> #form.dockwidget.widget['sc_510_002'].setCurrentIndex(5) # , doing it
> directly doesn't work
> QTest.keyClicks(form.dockwidget.widget['sc_510_002'], '9000 Gent',
> Qt.NoModifier, 50) # this works, a popup appears
> QTest.keyClick(form.dockwidget.widget['sc_510_002'], Qt.Key_Enter,
> Qt.NoModifier, 500)
> QTest.keyClick(form.dockwidget.widget['sc_510_002'], Qt.Key_Tab,
> Qt.NoModifier, 500)
> #QTest.keyClick(form.dockwidget.widget['sc_510_002'].completer,
> Qt.Key_Down, Qt.NoModifier, 500)
> #print(dir(form.dockwidget.widget['sc_510_002'].completer().widget()))
> #form.dockwidget.widget['sc_510_002'].completer().setCurrentRow(0)
> #QTest.keyClick(form.dockwidget.widget['sc_510_002'].completer().widget().lineEdit(),
> Qt.Key_Enter, Qt.NoModifier, 500)
> #form.dockwidget.widget['sc_510_002'].setEditText('1000 Brussel')
>
> The popup is the completer, I suppose, so I also tried to send keystrokes
> to that, but no luck.
>
> This is the method I use to add the completer to the QComboBox:
>
> def add_completer(self, items):
> self.setEditable(True)
> self.setInsertPolicy(0)
> completer = QCompleter(items, self)
> completer.setFilterMode(Qt.MatchContains)
> completer.setCaseSensitivity(False)
> self.setCompleter(completer)
> self.setStyleSheet('QScrollBar: vertical {width: 16px;}')
>
>
___
QGIS-Developer mailing list
QGIS-Developer@lists.osgeo.org
List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer
Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer