pyqt5を使用している私のコードのいくつかの問題に直面しています。 Qtクラスで問題が発生した場合、コンソールはクラッシュが発生した理由に関する情報を記録しません。このコードのインスタンスの :b
としてpyqtを使用するとPyCharmのpythonコンソールにエラーメッセージが表示されないのはなぜですか?
rom PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
import sys
class SurfViewer(QMainWindow):
def __init__(self, parent=None):
super(SurfViewer, self).__init__()
self.parent = parent
self.centralWidget = QWidget()
self.color = self.centralWidget.palette().color(QPalette.Background)
self.setCentralWidget(self.centralWidget)
self.plotview = QGroupBox(" ")
self.layout_plotview = QVBoxLayout()
self.Button_Crash= QPushButton('Crash!')
self.layout_plotview.addWidget(self.Button_Crash)
self.centralWidget.setLayout(self.layout_plotview)
self.Button_Crash.clicked.connect(self.TestForCrash)
def TestForCrash(self,):
a=b
return
def main():
app = QApplication(sys.argv)
ex = SurfViewer(app)
ex.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
がTestForCrash
機能では知られていないが、Qtのウィンドウがちょうど終了しますが、私は、コンソールには何も得なかっました。私は、コンソールが自動的に何が起こっているのかの手がかりを印刷するように強制する方法であるかどうか疑問に思っています。
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
import sys
class SurfViewer(QMainWindow):
def __init__(self, parent=None):
super(SurfViewer, self).__init__()
self.parent = parent
self.centralWidget = QWidget()
self.color = self.centralWidget.palette().color(QPalette.Background)
self.setCentralWidget(self.centralWidget)
self.plotview = QGroupBox(" ")
self.layout_plotview = QVBoxLayout()
self.Button_Crash= QPushButton('Crash!')
self.layout_plotview.addWidget(self.Button_Crash)
self.centralWidget.setLayout(self.layout_plotview)
self.Button_Crash.clicked.connect(self.TestForCrash)
def TestForCrash(self,):
try:
a=b
except BaseException as e:
msg = QMessageBox()
msg.setIcon(QMessageBox.Critical)
msg.setText(str(e))
msg.setStandardButtons(QMessageBox.Ok)
msg.exec_()
return
def main():
app = QApplication(sys.argv)
ex = SurfViewer(app)
ex.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
はtry
を使用せず、コンソールでのいくつかの情報をログに記録する彼らの別の方法です:今、私は問題を一周するtry
except
を使用していますが、私は非常にこのアイデアを好きではないために
except
?
「実際の」Windows端末(c:\ anaconda3 \ python.exe)ではスクリプトを実行しますが、PyCharmコンソールではスクリプトを実行するとエラーが発生します(スクリプトを実行するとエラーが発生します) 。 Pycharmでエラーログを強制的に強制する方法はありますか?多分それは私がまだ見つけられなかったオプションですか?
python.exeまたはpython ** w **。exeを使用してコードを起動していますか?前者は端末に例外を出力する必要があります。 –
私はPyCharmを使用しています。私が選んだインタプリタはc:\ anaconda3 \ python.exeです。 まだ何も印刷されません。 – ymmx
しかし、正しいですが、c:\ anaconda3 \ python.exeを使用してWindows CMDでスクリプトを実行すると、端末にエラーが記録されます。だから問題は多分PyCharmから来るでしょうか? – ymmx