[PyQt] Weird behavior in fromMimeData method (pyScintilla)

Phil Thompson phil at riverbankcomputing.com
Tue Sep 18 23:41:18 BST 2012


On Tue, 18 Sep 2012 23:16:00 +0200, Salvatore Larosa <lrssvtml at gmail.com>
wrote:
> Hi all,
> I am not sure if this is the rigth place to ask!
> 
> I created a small console to execute python command by using Qscintilla
> python bindings but something doesnt work with MIME data.
> 
> My code is:
> 
> def fromMimeData(self, source):
>         if source.hasText():
>             pasteList = QStringList()
>             pasteList = source.text().split("\n")
>             if (len(pasteList) > 1):
>               self.move_cursor_to_end()
>             for line in pasteList[:-1]:
>                 self.append(line)
>                 self.move_cursor_to_end()
>                 self.runCommand(unicode(self.currentCommand()))
>             self.append(unicode(pasteList[-1]))
>             self.move_cursor_to_end()
> 
> First question: when I paste some text in console and run command I get:
> 
> TypeError: invalid result type from PythonEdit.fromMimeData()
> 
> How I can avoid it?

fromMimeData() should return a 2-tuple of the text as a QByteArray and a
bool set if the selection is rectangular.

> Second question: If in my console I typed some text ( e.g def
> blablabla(self): ) and then
> I want edit it by replacing "self" with "source" by using paste command,
> the pasted text
> is placed at the end of the current line and not between brace getting
the
> following result:
> 
> def blablabla(self):source
> 
> Any idea on how I can solve it?

I can't reproduce that. What does move_cursor_to_end() do in the above
code?

Phil


More information about the PyQt mailing list