2017-01-29 26 views
0

コードが小さくなっています私が何をしようとしているかを実証するためにまとめました。ラジオボタンのQButtonGroupから情報を取得するだけです。具体的には、クリックされたテキストです。しかし、GUIのpythonのボタンをクリックして実行するとクラッシュします。エラーメッセージはありませんので、原因を特定できません。以下は、ラジオボタンをクリックすると画像が表示される例のコードです。 より効率の低いメソッドで先に動作しています。サーバーにコマンドを送信する必要がありましたが、couchDBドキュメントに変更を保存しようとしたときに同じエラーが発生しました特にdb.save(doc)コマンドを使用します。Qt Python GUIがボタンクリックでクラッシュする

# -*- coding: utf-8 -*- 

# Form implementation generated from reading ui file 'test.ui' 
# 
# Created by: PyQt5 UI code generator 5.6 
# 
# WARNING! All changes made in this file will be lost! 

from PyQt5 import QtCore, QtGui, QtWidgets 

class Ui_Dialog(object): 
    def setupUi(self, Dialog): 
     Dialog.setObjectName("Dialog") 
     Dialog.resize(400, 300) 
     self.verticalLayoutWidget = QtWidgets.QWidget(Dialog) 
     self.verticalLayoutWidget.setGeometry(QtCore.QRect(130, 80, 101, 80)) 
     self.verticalLayoutWidget.setObjectName("verticalLayoutWidget") 
     self.verticalLayout = QtWidgets.QVBoxLayout(self.verticalLayoutWidget) 
     self.verticalLayout.setContentsMargins(0, 0, 0, 0) 
     self.verticalLayout.setObjectName("verticalLayout") 
     self.rad2 = QtWidgets.QRadioButton(self.verticalLayoutWidget) 
     self.rad2.setObjectName("rad2") 
     self.group1 = QtWidgets.QButtonGroup(Dialog) 
     self.group1.setObjectName("group1") 
     self.group1.addButton(self.rad2) 
     self.verticalLayout.addWidget(self.rad2) 
     self.rad3 = QtWidgets.QRadioButton(self.verticalLayoutWidget) 
     self.rad3.setObjectName("rad3") 
     self.group1.addButton(self.rad3) 
     self.verticalLayout.addWidget(self.rad3) 
     self.rad1 = QtWidgets.QRadioButton(self.verticalLayoutWidget) 
     self.rad1.setObjectName("rad1") 
     self.group1.addButton(self.rad1) 
     self.verticalLayout.addWidget(self.rad1) 

     self.retranslateUi(Dialog) 
     QtCore.QMetaObject.connectSlotsByName(Dialog) 

    def printText(button): 
     print(button.text()) 

    def retranslateUi(self, Dialog): 
     _translate = QtCore.QCoreApplication.translate 
     Dialog.setWindowTitle(_translate("Dialog", "Dialog")) 
     self.rad2.setText(_translate("Dialog", "RadioButton")) 
     self.rad3.setText(_translate("Dialog", "RadioButton")) 
     self.rad1.setText(_translate("Dialog", "RadioButton")) 

     ui.group1.buttonClicked.connect(self.printText) 

if __name__ == "__main__": 
    import sys 
    app = QtWidgets.QApplication(sys.argv) 
    Dialog = QtWidgets.QDialog() 
    ui = Ui_Dialog() 
    ui.setupUi(Dialog) 
    Dialog.show() 
    sys.exit(app.exec_()) 

enter image description here

答えて

0

あなたはself引数でスロットを定義する必要があります。

def printText(self, button): 
     print(button.text()) 
+0

すごい...私はダム感じます。ありがとうございました!それはうまくいった! –

関連する問題