2013-12-22 66 views
1

我在Ubuntu 13.10上使用Python 2.7.5,PyQt4版本爲4.10.2。我是PyQt的新手,下面的代碼演示了我如何得到分段錯誤。 啓動Python解釋器後:將文本分配給QGraphicsSimpleTextItem時PyQt4分段錯誤

Python 2.7.5+ (default, Sep 19 2013, 13:48:49) 
[GCC 4.8.1] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> from PyQt4 import QtGui 
>>> obj=QtGui.QGraphicsSimpleTextItem() 
>>> obj.setText('sometext') 
Segmentation fault (core dumped) 

或直接用初始化字符串:

>>> from PyQt4 import QtGui 
>>> obj2=QtGui.QGraphicsSimpleTextItem('some text') 
Segmentation fault (core dumped) 

或QString的對象設置文本:

>>> from PyQt4 import QtGui, QtCore 
>>> s=QtCore.QString('sometext') 
>>> obj=QtGui.QGraphicsSimpleTextItem() 
>>> obj.setText(s) 
Segmentation fault (core dumped) 

我一定是錯過了一些非常基本的。請幫忙。謝謝。

回答

0

你應該總是嘗試使用GUI對象/部件之前創建QApplication的實例:

Python 2.7.6 (default, Nov 26 2013, 12:52:49) 
[GCC 4.8.2] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> from PyQt4 import QtGui 
>>> app = QtGui.QApplication([]) 
>>> obj = QtGui.QGraphicsSimpleTextItem() 
>>> obj.setText('foo') 
>>> 

它是一個好主意,功能添加到您的.pythonrc.py其完成所有必要的進口,並建立了一個PyQt的互動會話 - 節省了很多繁瑣的重新輸入!

+0

謝謝ekhumoro。我只是試過你的代碼,它的工作。你介意給我一些參考或關鍵詞,以便我可以進一步瞭解qt是如何工作的?因爲這對我來說似乎更直觀... – user3126725

+0

@ user3126725。主要參考是[Qt文檔](https://qt-project.org/doc/)。有關QApplication的詳細信息,請參見此處(https://qt-project.org/doc/qt-4.8/qapplication.html#details)。對於PyQt特定的東西,只要做一個「pyqt教程」的網絡搜索 - 那裏有很多東西。如果您有特定的編程問題,您可以隨時回到SO。祝你好運! – ekhumoro

+0

非常感謝! --------------- – user3126725