【问题标题】:Qt Python GUI Crashes on Button Click按钮单击时 Qt Python GUI 崩溃
【发布时间】:2017-06-15 00:04:40
【问题描述】:

代码是我为了演示我正在尝试做的事情而放在一起的较小版本。我只需要从单选按钮的 QButtonGroup 中获取信息。特别是点击了哪个文本。但是,当我运行单击 GUI 中的按钮时,python 崩溃了。没有错误消息,所以我无法查明原因。下面是示例代码,下面是单击单选按钮时显示的图像: 早先使用一种效率较低的方法,我不得不向服务器发送命令,但是当我尝试使用 db.save(doc) 命令将更改保存到 couchDB 文档时发生了同样的错误。

# -*- 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_())

【问题讨论】:

    标签: python qt couchdb


    【解决方案1】:

    您需要使用self 参数定义插槽:

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

    【讨论】:

      猜你喜欢
      • 2018-10-13
      • 1970-01-01
      • 1970-01-01
      • 2021-03-13
      • 1970-01-01
      • 2013-09-23
      • 2011-10-20
      • 2015-09-18
      • 1970-01-01
      相关资源
      最近更新 更多