Jan_K
2nd February 2018, 06:48
Hej.
I am trying to add LineEdit dynamically and it works partly.
Fields are added and looks okay but when I close the program then I get the message "Python.exe" has stopped working.
Bellow I have added the two codes which I am trying to get working.
It generates a 5 x 5 matrix of LineEdit's and this fails on close.
If I only add 1x1 then I don't get any error on closing.
I have tried various approaches most try and error but I think that here is something fundamentally I don't understand.
The UI
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'User_terminal.ui'
#
# Created by: PyQt4 UI code generator 4.11.4
#
# WARNING! All changes made in this file will be lost!
from PyQt4 import QtCore, QtGui
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
return s
try:
_encoding = QtGui.QApplication.UnicodeUTF8
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig)
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName(_fromUtf8("MainWindow"))
MainWindow.resize(800, 600)
self.centralwidget = QtGui.QWidget(MainWindow)
self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtGui.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 21))
self.menubar.setObjectName(_fromUtf8("menubar"))
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtGui.QStatusBar(MainWindow)
self.statusbar.setObjectName(_fromUtf8("statusbar"))
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow", None))
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
MainWindow = QtGui.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
The main code.
import sys
from User_terminal import Ui_MainWindow
from PyQt4 import QtCore, QtGui
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
return s
class Class_user_terminal(QtGui.QMainWindow, Ui_MainWindow):
def __init__(self, parent=None):
super(Class_user_terminal, self).__init__(parent)
self.setupUi(self)
self.My_list = []
X_rast = 60
Y_rast = 30
Y_n = 0
i = 0
while Y_n < 5:
X_n = 0
while X_n < 5:
self.My_list.append(QtGui.QLineEdit(self.centralwi dget))
self.My_list[-1].setGeometry(QtCore.QRect((60 + X_n*X_rast), (60 + Y_n*Y_rast), 40, 20))
self.My_list[-1].setText("But {}".format(i))
self.My_list[-1].setObjectName(_fromUtf8("lineEdit_myline{}".format(i)))
X_n = X_n + 1
i = i + 1
Y_n = Y_n + 1
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
frame = Class_user_terminal()
frame.show()
sys.exit(app.exec_())
/Jan
I am trying to add LineEdit dynamically and it works partly.
Fields are added and looks okay but when I close the program then I get the message "Python.exe" has stopped working.
Bellow I have added the two codes which I am trying to get working.
It generates a 5 x 5 matrix of LineEdit's and this fails on close.
If I only add 1x1 then I don't get any error on closing.
I have tried various approaches most try and error but I think that here is something fundamentally I don't understand.
The UI
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'User_terminal.ui'
#
# Created by: PyQt4 UI code generator 4.11.4
#
# WARNING! All changes made in this file will be lost!
from PyQt4 import QtCore, QtGui
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
return s
try:
_encoding = QtGui.QApplication.UnicodeUTF8
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig)
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName(_fromUtf8("MainWindow"))
MainWindow.resize(800, 600)
self.centralwidget = QtGui.QWidget(MainWindow)
self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtGui.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 21))
self.menubar.setObjectName(_fromUtf8("menubar"))
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtGui.QStatusBar(MainWindow)
self.statusbar.setObjectName(_fromUtf8("statusbar"))
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow", None))
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
MainWindow = QtGui.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
The main code.
import sys
from User_terminal import Ui_MainWindow
from PyQt4 import QtCore, QtGui
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
return s
class Class_user_terminal(QtGui.QMainWindow, Ui_MainWindow):
def __init__(self, parent=None):
super(Class_user_terminal, self).__init__(parent)
self.setupUi(self)
self.My_list = []
X_rast = 60
Y_rast = 30
Y_n = 0
i = 0
while Y_n < 5:
X_n = 0
while X_n < 5:
self.My_list.append(QtGui.QLineEdit(self.centralwi dget))
self.My_list[-1].setGeometry(QtCore.QRect((60 + X_n*X_rast), (60 + Y_n*Y_rast), 40, 20))
self.My_list[-1].setText("But {}".format(i))
self.My_list[-1].setObjectName(_fromUtf8("lineEdit_myline{}".format(i)))
X_n = X_n + 1
i = i + 1
Y_n = Y_n + 1
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
frame = Class_user_terminal()
frame.show()
sys.exit(app.exec_())
/Jan