python - PyQt5 - 关闭应用程序 bec。.value() 方法的错误
问题描述
每当我在我的 PyQt5 应用程序的第二个窗口中单击一个按钮时,该按钮应该只在 GUI 中打印 QDateEdit 的值,它会以以下行关闭:“进程以退出代码 -1073740791 (0xC0000409) 完成”。我发现问题与 .value() 方法有关。这是使用下面的 Ui_Form 类重现错误的最小方法:
import sys
from PyQt5 import QtWidgets
from ui.fenster import Ui_Form
app = QtWidgets.QApplication(sys.argv)
class AppendWindow(QtWidgets.QMainWindow):
def __init__(self, parent=None):
super().__init__(parent)
self.ui = Ui_Form()
self.ui.setupUi(self)
self.ui.submit.clicked.connect(self.show_value)
def show_value(self):
print(self.ui.date.value())
append = AppendWindow()
append.show()
sys.exit(app.exec_())
Ui_Form:
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName("Form")
Form.resize(413, 215)
self.date = QtWidgets.QDateEdit(Form)
self.date.setGeometry(QtCore.QRect(72, 26, 321, 20))
self.date.setObjectName("date")
self.label = QtWidgets.QLabel(Form)
self.label.setGeometry(QtCore.QRect(9, 26, 57, 16))
self.label.setObjectName("label")
self.age = QtWidgets.QSpinBox(Form)
self.age.setGeometry(QtCore.QRect(70, 120, 321, 20))
self.age.setObjectName("age")
self.label_2 = QtWidgets.QLabel(Form)
self.label_2.setGeometry(QtCore.QRect(10, 120, 23, 16))
self.label_2.setObjectName("label_2")
self.label_3 = QtWidgets.QLabel(Form)
self.label_3.setGeometry(QtCore.QRect(9, 69, 27, 16))
self.label_3.setObjectName("label_3")
self.name = QtWidgets.QPlainTextEdit(Form)
self.name.setGeometry(QtCore.QRect(72, 69, 319, 21))
self.name.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
self.name.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
self.name.setObjectName("name")
self.submit = QtWidgets.QPushButton(Form)
self.submit.setGeometry(QtCore.QRect(170, 170, 75, 23))
self.submit.setObjectName("submit")
self.retranslateUi(Form)
QtCore.QMetaObject.connectSlotsByName(Form)
def retranslateUi(self, Form):
_translate = QtCore.QCoreApplication.translate
Form.setWindowTitle(_translate("Form", "Form"))
self.label.setText(_translate("Form", "Geburtsjahr"))
self.label_2.setText(_translate("Form", "Alter"))
self.label_3.setText(_translate("Form", "Name"))
self.submit.setText(_translate("Form", "Absenden!"))
有谁知道如何解决这一问题?我感谢您的帮助!
解决方案
您需要添加app.exec()
主代码才能启动主循环。
app = QtWidgets.QApplication(sys.argv)
app.exec()
主循环处理所有传入事件并将它们传递给您的 GUI 元素。
推荐阅读
- html - 更改导航栏定位
- azure-devops - 使用伊斯坦布尔的 Azure DevOps 代码覆盖率选项卡中的链接不起作用
- java - 将字符串保存到文件中,然后将其加载到字符串变量中将给出一个“不同”的字符串,该字符串似乎具有完全相同的名称
- javascript - 追加到查询字符串 JavaScript
- java - 是否存在只存储哈希码而不存储实际对象的数据结构?
- r - for-looping - 我很难通过 for-looping 来估计我的数据的小数点后二位
- python - 未找到 PyCharm 模块
- linux - 环境变量 PWD 是否总是在 Linux 中定义?
- python - 带有字符串数组的 Cython prange
- c++ - 为什么 For 循环中的 While 循环在我的程序中不起作用?