On Thu, 14 Apr 2011 13:57:09 +0400, Anton Chikin <[email protected]> wrote: > On Wed, Apr 13, 2011 at 9:09 PM, Phil Thompson > <[email protected]> wrote: >> On Wed, 13 Apr 2011 14:31:05 +0400, Anton Chikin >> <[email protected]> >> wrote: >>> Hello All, >>> >>> I'm using PyQt version 4.8.3-2, shipped with Ubuntu 11.04 beta. While >>> I was trying to use new multitouch testing function >>> QTest::touchEvent() http://doc.qt.nokia.com/4.7/qtest.html#touchEvent >>> I've come across the issue. This piece of code >>> >>> from PyQt4 import QtTest >>> def testMT(self): >>> QtTest.QTest.touchEvent(self).press(0, QPoint(100,100)) >>> >>> causes >>> >>> AttributeError: type object 'QTest' has no attribute 'touchEvent' >>> >>> I discovered that this function is not listed in PyQt4 docs. >>> http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qtest.html >>> >>> Could you please give me some guidelines to resolve this? >>> Thank you! >>> Anton Chikin. >> >> Hmm - not sure how it got missed. It will be in tonight's snapshot. >> >> Thanks, >> Phil >> > > Hi Phil, > > I've come across another issue using multitouch test functions. > Please have a look at QTouchEventSequence doc page > http://doc.qt.nokia.com/4.7-snapshot/qtest-qtoucheventsequence.html > I wrote the following sample to demonstrate the issue: > ------------------------------------------------------------------------------------- > import sys > import inspect > from PyQt4 import QtCore, QtGui, QtTest > > class MyLabel(QtGui.QLabel): > def __init__(self, string, parent = None): > QtGui.QLabel.__init__(self, string, parent) > self.resize(500,300) > > def event(self, evt): > if evt.type() == QtCore.QEvent.TouchBegin: > print("TouchBegin!") > #Double click causes QTouchEvent to be sent > if evt.type() == QtCore.QEvent.MouseButtonDblClick: > print("Double click!") > self.testMT() > return QtGui.QLabel.event(self, evt) > > def testMT(self): > evSeq = QtTest.QTest.touchEvent(self) > print(inspect.getmembers(evSeq)) > evSeq.press(0, QtCore.QPoint(10,10), self) #<------- Python > crashes here! > print("MT event sent!") > return > > if __name__ == "__main__": > app = QtGui.QApplication(sys.argv) > label = MyLabel("Hello!") > label.show() > app.exec_() > sys.exit() > -------------------------------------------------------------------------------------- > At the line, where I try to call QTouchEventSequence.press() - Python > crashes with core dump. > Is this the real issue or just I am doing wrong things?
It looks like QTouchEventSequence has a really dumb API which means it's unusable in anything other that C++ code. You have to use the instance immediately - you can't make a copy on the heap to pass around and use later. Unless anybody has any suggestions I'll remove it completely. Phil _______________________________________________ PyQt mailing list [email protected] http://www.riverbankcomputing.com/mailman/listinfo/pyqt
