[QScintilla] Bug copying text on QScintilla

Phil Thompson phil at riverbankcomputing.com
Tue Jun 18 17:59:06 BST 2019


On 18/06/2019 15:02, Scener Spanish wrote:
> Let's continue this conversation on my other message related to this in 
> the
> pyqt mailing list. Also, make sure you don't open the viewer till 
> you've
> closed the app... In fact, you don't even need a clip viewer, the
> information won't be copied properly. Did you check on win7 or higher?
> 
> Thanks
> 
> El mar., 18 jun. 2019 15:58, Phil Thompson 
> <phil at riverbankcomputing.com>
> escribió:
> 
>> On 14/06/2019 12:13, Scener Spanish wrote:
>> > I forgot to add the line `w.selectAll()` after w.show() in my previous
>> > snippet... btw, it'd be great having a github repo to report
>> > pyqt/qscintilla issues... mailing lists
>> > was a good thing in the 90s, not anymore ;D
>> >
>> > On Fri, Jun 14, 2019 at 1:05 PM Scener Spanish <spscener84 at gmail.com>
>> > wrote:
>> >
>> >> Hi, consider this snippet:
>> >>
>> >> from PyQt5.Qt import *
>> >> from PyQt5.Qsci import QsciScintilla
>> >>
>> >>
>> >> if __name__ == '__main__':
>> >>     app = QApplication([])
>> >>     w = QsciScintilla()
>> >>     w.setText("hello world")
>> >>     w.show()
>> >>     app.exec_()
>> >>
>> >> *Test1) *Run it, press ctrl+c, close the window and then open your
>> >> system
>> >> clipboard viewer... for some reason on windows7 the is broken, you'll
>> >> binary content --> this
>> >> <
>> https://dl.dropboxusercontent.com/s/gtf9cgg1cygbre4/clipbrd_2019-06-14_12-56-37.png>
>> 
>> >> . That
>> >> means you won't be able to paste the content on a text editor.
>> >>
>> >> *Test2) *Run it, press ctrl+c and then open your system clipboard
>> >> viewer,
>> >> in this case you'll be able to see the copied content correctly, like
>> >> this
>> >> <
>> https://dl.dropboxusercontent.com/s/8xq5riznnxs07cg/clipbrd_2019-06-14_12-59-06.png
>> >
>> >> .
>> >>
>> >> This issue has really annoyed me in the past many times but I didn't
>> >> know
>> >> how to reproduce it or what was the reason why the content I'd copied
>> >> from
>> >> my app couldn't be pasted anymore
>> >>
>> >> *Requirements:*
>> >>
>> >> windows 7 ultimate
>> >> Python 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:04:45) [MSC v.1900 32
>> >> bit
>> >> (Intel)] on win32
>> >>
>> >> QScintilla==2.11.2.dev1905151033
>> >> PyQt5==5.12.2
>> >> PyQt5-sip==4.19.17
>> 
>> There is no system clipboard viewer on Windows. With...
>> 
>> http://www.freeclipboardviewer.com
>> 
>> ...it seems to work fine.
>> 
>> Phil

Ok I can now reproduce the problem. It also happens with C++ when the 
QApplication is created on the heap and not explicitly destroyed.

The workaround in your test is to 'del app' at the end of the script.

Tonight's PyQt snapshot adds support for using QCoreApplication (and 
sub-classes) as a context manager which calls the C++ dtor when exiting 
the context. So...

with QApplication([]) as app:
     ....
     app->exec()

Phil

Phil


More information about the QScintilla mailing list