イントロPython 3.6; PyQt5;アーチlinux;信号6によって中断:SIGABRT
こんにちは、私は長い時間のリードオンリーメンバーが、初めてのポスターです。 PyQt5の学習中に問題が発生しました。
これまでのところ、私が答えを探して問題を理解しているうちに、私はほとんど手を出していませんでした。私が見つけたたくさんのリンクや投稿は、PythonやQt5にはまったく当てはまりません.SIGABRTはメモリ割り当てなどのいくつかの面に当てはまるので奇妙ではありません。
私は、エラーがなどとbuttonEnv.clicked.connect(ラムダ:self.btnClicked(buttonEnv))
のような行に由来することをかなり確信している
しかし、持っていますそれが何であるかを特定することができなかった。おそらく、Pythonに私の知識が不足しているからです。
システム
-OS:アーチのLinux(Manjaro)4.9.27-1-MANJARO
-IDE:Pycharm 2017.1
-Pythonバージョン:3.6
-Using :PyQt5
エラーが発生しました
/usr/bin/python3.6 /opt/pycharm-community/helpers/pydev/pydevd.py --multiproc --qt-サポート--client 127.0.0.1 --port 42749 --file /home/alpeace/Documents/git_reps/project-tardis/main.py PyDevはデバッガ: プロセス22588は、終了コード134で終了
処理(中断(171.4249.47ビルド)PyDevはデバッガに接続
を接続しています信号6:SIGABRT)
私のコードは
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import QMainWindow, QAction, qApp, QApplication, QGridLayout,\
QBoxLayout, QPushButton, QWidget, QSizePolicy
from PyQt5.QtGui import QIcon
class HomeScreen(QWidget):
clickedBtn = ''
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.clickedBtn = ''
homeBtnLayout = QGridLayout()
self.setLayout(homeBtnLayout)
buttonEnv = QPushButton('Environment')
buttonEnv.clicked.connect(lambda: self.btnClicked(buttonEnv))
buttonEnv.setSizePolicy(QSizePolicy.MinimumExpanding, QSizePolicy.Preferred)
buttonMedia = QPushButton('Media')
buttonMedia.clicked.connect(lambda: self.btnClicked(buttonMedia))
buttonMedia.setSizePolicy(QSizePolicy.MinimumExpanding, QSizePolicy.Preferred)
buttonInv = QPushButton('Inventory')
buttonInv.clicked.connect(lambda: self.btnClicked(buttonInv))
buttonInv.setSizePolicy(QSizePolicy.MinimumExpanding, QSizePolicy.Preferred)
buttonSched = QPushButton('Schedual')
buttonSched.clicked.connect(lambda: self.btnClicked(buttonSched))
buttonSched.setSizePolicy(QSizePolicy.MinimumExpanding, QSizePolicy.Preferred)
homeBtnLayout.addWidget(buttonEnv, 0, 0)
homeBtnLayout.addWidget(buttonMedia, 0, 1)
homeBtnLayout.addWidget(buttonInv, 1, 0)
homeBtnLayout.addWidget(buttonSched, 1, 1)
self.move(300, 150)
self.show()
def btnClicked(self, btnName):
self.clickedBtn = btnName.text()
btnName.disconnect()
def getClickedBtn(self):
return self.clickedBtn
class MainWindow(QMainWindow):
screenHome = HomeScreen()
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setGeometry(300, 300, 300, 250)
self.setWindowTitle('Home')
self.screenHome = HomeScreen()
self.setCentralWidget(self.screenHome)
self.show()
def changeWindow(self):
newWindow = self.screenHome.getClickedBtn()
if newWindow == 'Environment':
print(newWindow)
elif newWindow == 'Media':
print(newWindow)
elif newWindow == 'Inventory':
print(newWindow)
elif newWindow == 'Schedual':
print(newWindow)
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = MainWindow()
sys.exit(app.exec_())
とにかく、読書のためのおかげで、私は、誰かがこれで私を助けることができるかもしれない願っています。より多くの情報が必要な場合は、私はそれを喜んで提供しますが、私が知る限り、これで十分であるはずです。
よろしくAlpeace
リリースモードで実行しているとき/ CLIからSIGABRTを取得していますか? – Paul92
コマンドラインから実行すると、「QWidget:QWidgetの前にQApplicationを構築する必要があります。 アボート(コアダンプ)」です。最初にQApplicationを構築するコードを変更すると、クラスが未定義になるなど、他のエラーが発生します。これは、私のPythonに関する経験が悲しいところです。 – Alpeace