2016-03-26 21 views
3

最後のコードブロックの関数を使用してQTextEditウィジェットのフォントを変更しようとすると、プログラムはコード1で即座にクラッシュします。何故その理由がありますか?(PyQt)QTextEditウィジェットのフォントを変更できないのはなぜですか?

self.font = QFont("Arial") 

...

self.text_edit = QTextEdit() 
self.setCentralWidget(self.text_edit) 
self.text_edit.setCurrentFont(self.font)  

...

def aFont(self): 
    previous_font = self.font 
    self.font = QFontDialog().getFont(previous_font) 
    if self.font != previous_font: 
     self.text_edit.selectAll() 
     self.text_edit.setCurrentFont(self.font) 

答えて

3

あなたの質問は、このような使用しているプラ​​ットフォームとPyQtはのバージョンなど、多くの重要な情報が欠けている、と完全なトレースバック。しかし、あなたがPyQt-5.5を使用していると仮定すると、問題の原因の可能性を推測することは可能です。

以前のバージョンのPyQtでは、処理されない例外があると、アプリケーションの実行を中断することなくトレースバックがstderrに出力されます。しかし、これは通常のPythonスクリプトがどのように振舞うかではありません。したがって、PyQt-5.5では、未処理の例外が発生したときにアプリケーションがすぐに中止されるという点で、この動作は修正されています(PyQt5ドキュメントのIncompatibilities with Earlier Versionsを参照)。 「だから、アプリケーションがない

Traceback (most recent call last): 
    File "test.py", line 21, in aFont 
    self.text_edit.setCurrentFont(self.font) 
TypeError: QTextEdit.setCurrentFont(QFont): argument 1 has unexpected type 'tuple' 
Aborted (core dumped) 

私はあなたがあなたのアプリケーションを実行すると、あなたが見るものを知らない(私は、Windowsにしていると仮定しています)が、Linux上で私はこれを参照してくださいクラッシュ " - 処理されない例外が発生したときに処理が中止されます。 getFontは(okは、ユーザがOKをクリックし、またはキャンセルするかどうかを示すブール値である)タプルfont, okを返すため

self.font = QFontDialog().getFont(previous_font) 

:特定のエラーは、このラインによって引き起こされます。 [0] `` self.font = QFontDialog()のgetFont(previous_font) -

self.font, ok = QFontDialog().getFont(previous_font) 
+1

するか、我々は唯一のフォントが必要な場合:だから、ちょうどこのように見えるように行を変更する必要があります。 –

関連する問題