i have a QLineedit which i want to print out the user input once the button is pressed but it keeps throwing out this error
Process finished with exit code -1073740791 (0xC0000409)
from PyQt5.QtWidgets import QMessageBox
from PyQt5 import QtCore, QtGui, QtWidgets
import webbrowser
def subscribe_clicked():
print(sub.text())
msg = QMessageBox()
msg.setWindowTitle("Subscribe")
msg.setText("You will now recieve updates")
msg.setIcon(QMessageBox.Question)
msg.exec_()
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(723, 785)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.gridLayout_2 = QtWidgets.QGridLayout(self.centralwidget)
self.gridLayout_2.setObjectName("gridLayout_2")
self.join = QtWidgets.QLabel(self.centralwidget)
self.join.setObjectName("join")
self.gridLayout_2.addWidget(self.join, 1, 0, 1, 1)
self.sub = QtWidgets.QLineEdit(self.centralwidget)
self.sub.setObjectName("sub")
self.subscribe = QtWidgets.QPushButton(self.centralwidget)
self.subscribe.clicked.connect(subscribe_clicked)
self.subscribe.setObjectName("subscribe")
self.gridLayout_2.addWidget(self.subscribe, 3, 0, 1, 1)
self.sub.raise_()
self.subscribe.raise_()
self.sub.raise_()
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 723, 26))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
if i put in a manual entry it prints fine , but it wont call the information from the QlineEdit text box
The reason for error is in function
def subscribe_clicked():
print(sub.text())
msg = QMessageBox()
msg.setWindowTitle("Subscribe")
msg.setText("You will now recieve updates")
msg.setIcon(QMessageBox.Question)
msg.exec_()
In line print(sub.text())
the sub
is undefined since it doesn't exist out of Ui_MainWindow
. Therefore it throws an error:
Process finished with exit code -1073740791 (0xC0000409)
We can fix the problem by passing sub
which is a QLineEdit
in MainWindow class to subscribe_clicked()
function. By doing the following:
Pass parameter to function with lambda by changing:
self.subscribe.clicked.connect(subscribe_clicked)
To
self.subscribe.clicked.connect(lambda:subscribe_clicked(self.sub))
Add parameter to function
def subscribe_clicked(sub):
print(sub.text())
msg = QMessageBox()
msg.setWindowTitle("Subscribe")
msg.setText("You will now recieve updates")
msg.setIcon(QMessageBox.Question)
msg.exec_()
Full Code:
from PyQt5.QtWidgets import QMessageBox
from PyQt5 import QtCore, QtGui, QtWidgets
import webbrowser
def subscribe_clicked(sub):
print(sub.text())
msg = QMessageBox()
msg.setWindowTitle("Subscribe")
msg.setText("You will now recieve updates")
msg.setIcon(QMessageBox.Question)
msg.exec_()
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(723, 785)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.gridLayout_2 = QtWidgets.QGridLayout(self.centralwidget)
self.gridLayout_2.setObjectName("gridLayout_2")
self.join = QtWidgets.QLabel(self.centralwidget)
self.join.setObjectName("join")
self.gridLayout_2.addWidget(self.join, 1, 0, 1, 1)
self.sub = QtWidgets.QLineEdit(self.centralwidget)
self.sub.setObjectName("sub")
self.subscribe = QtWidgets.QPushButton(self.centralwidget)
self.subscribe.clicked.connect(lambda:subscribe_clicked(self.sub))
self.subscribe.setObjectName("subscribe")
self.gridLayout_2.addWidget(self.subscribe, 3, 0, 1, 1)
self.sub.raise_()
self.subscribe.raise_()
self.sub.raise_()
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 723, 26))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
User contributions licensed under CC BY-SA 3.0