from PyQt5.QtWidgets import QLineEdit from model.qtmodels.person_table_model import PersonTableModel from windows import groupedit from PyQt5 import QtWidgets as Qt from model.group import Group class GroupEdit(Qt.QWidget, groupedit.Ui_Form): NEW_GROUP = 0 def __init__(self, main_window, group, parent=None): super(GroupEdit, self).__init__(parent) self.setupUi(self) if group == self.NEW_GROUP: self.setGroup(Group(Group.NEW_GROUP)) else: self.setGroup(group) self._editName = QLineEdit() self.btnDelete.clicked.connect(self.deleteGroup) self.btnChangeName.clicked.connect(self.editName) def setGroup(self, group): self.group = group self.tableMembers.setModel(PersonTableModel(group.getMembers(), 2)) self.lblName.setText(group.name) def editName(self): self.btnChangeName.setText("OK") # hide label and remove it from layout self.lblName.hide() self.layoutName.removeWidget(self.lblName) # make line edit the same size if self.lblName.width() > 100: self._editName.setFixedWidth(self.lblName.width()) else: self._editName.setFixedWidth(100) self._editName.setFixedHeight(self.lblName.height()) # add line edit to layout self.layoutName.insertWidget(1, self._editName) self._editName.show() # change signals of button self.btnChangeName.clicked.disconnect(self.editName) self.btnChangeName.clicked.connect(self.changeName) def changeName(self): self._checkName() self.btnChangeName.setText("Edit") # hide line edit self._editName.hide() self.layoutName.removeWidget(self._editName) #show updated label self.layoutName.insertWidget(1, self.lblName) self.lblName.setText(self._editName.text()) self.lblName.show() # change signals of button self.btnChangeName.clicked.disconnect(self.changeName) self.btnChangeName.clicked.connect(self.editName) def _checkName(self): ... def deleteGroup(self): self.group.delete()