Найти - Пользователи
Полная версия: Прошу о помощи!!!!Нужно удалить QLineEdit, но при попытке удаления приложение падает...
Начало » GUI » Прошу о помощи!!!!Нужно удалить QLineEdit, но при попытке удаления приложение падает...
1
Agri
             self.date_field = QtGui.QLineEdit(self)
            self.date_field.setText('')
            self.date_field.setInputMask("B9.9999;_")
            self.date_field.setMaximumSize(75, 25)
            self.mainLayout.addWidget(self.date_field, 0, 5)
            # по нажатию Enter появляется поле для ввода имени и фамилии сотрудника
            self.connect(self.date_field, QtCore.SIGNAL('returnPressed()'),
                         self.raiseWorkmanField)
    #метод создающий поле для ввода имени и фамилии сотрудника
    def raiseWorkmanField (self):
        self.workman_field = QtGui.QLineEdit(self)
        self.workman_field.setText('')
        self.workman_field.setFocus()
        self.workman_field.setMaximumSize(150, 25)
        self.workman_field.setCompleter(QtGui.QCompleter(self.workman_lst))
        self.mainLayout.addWidget(self.workman_field, 0, 6)
        self.connect(self.workman_field, QtCore.SIGNAL('returnPressed()'),
                 lambda: (self.information(date=(self.date_field.text()),workman=(self.workman_field.text())),
                 self.date_field.deleteLater(), self.comboBox_sort.setCurrentIndex(0),self.delWorkmanField()))
    #удаление поля для ввода фамилии сотрудника
    def delWorkmanField (self):
        self.mainLayout.removeWidget(self.workman_field)    #удаление поля из layout
        self.workman_field.deleteLater()                    #удаление поля как объекта PyQt4
        self.workman_field.setParent(None)                 #лишение поля родителя
        del self.workman_field                              #удаление объекта Python

Люди добрые, подскажите….Нужно удалить QLineEdit, но при попытке удаления приложение падает…
вот при попытке вызова метода delWorkmanField приложение и падает
vic57
http://qt-doc.ru/dialogovoe-okno-vvoda.html
MrViktor
Agri
Нужно удалить QLineEdit, но при попытке удаления приложение падает
Очень противоречивые чувства у меня вызывают данные действия. Для понимания, у Вас в приложении, к примеру при нажатии на кнопку удаляется виджет QLineEdit с формы? Если так, то мое мнение, это не правильный подход, логичней скрыть его или заблокировать на редактирование.
PEHDOM
выложите запускабельный пример на котором повторяеться ошибка. Потому как тут гадать можно до бесконечности. Например я набросал простенький пример , все удаляеться корректно.
 # -*- coding: utf-8 -*-
import sys
from PyQt4 import QtGui
from PyQt4 import QtCore
class WIndow(QtGui.QWidget):
    def __init__(self, parent=None):
        QtGui.QMainWindow.__init__(self, parent)
        self.layout = QtGui.QVBoxLayout(self)
        self.layout.setAlignment(QtCore.Qt.AlignCenter)
        self.label = QtGui.QLabel(text='Object')
        self.layout.addWidget(self.label)
        self.lineEdit = QtGui.QLineEdit()
        self.layout.addWidget(self.lineEdit)
        self.button = QtGui.QPushButton('DELETE')
        self.layout.addWidget(self.button)
        self.button.clicked.connect(self.deleteLineEdit)
        self.show()
    def deleteLineEdit(self):
        self.layout.removeWidget(self.lineEdit)
        self.lineEdit.deleteLater()
        self.lineEdit.setParent(None)
        del self.lineEdit
        print('work')
app = QtGui.QApplication(sys.argv)
mainWin=WIndow()
sys.exit(app.exec_())
MrViktor
PEHDOM
А коннект надо удалять у удаляемого поля?
Это получается типа динамического интерфейса?
Agri
MrViktor
Собственно промучившись еще пол дня, я сделал так self.workman_field.hide()

и еще по поводу disconnect как в моем случае правильно написать. а то я новичок в этом деле…
MrViktor
Agri
MrViktorСобственно промучившись еще пол дня, я сделал так self.workman_field.hide()
Мне кажется так правильней, ввиду того, что если вдруг понадобиться кардинально изменить интерфейс со всем этим кодом будут проблемы.
Идея интересная, хотя я интерфейс в дизайнере создаю и подключаю ui файл к проекту.
PEHDOM
MrViktor
А коннект надо удалять у удаляемого поля?
Да насколько я помню, КуТэ само удалит все конекты при удалении виджета.
Хотя всякое бывает, потому и просил полный текс на котором появляеться ошибка.

Или вы име ввиду коннекты к виджету?
допустим у вас есть текст
 self.button2.clicked.connect(lambda: print(self.lineEdit.text()))
то после lineEdit.deleteLater() оно никуда не денеться, и после удаления, нажатие на кнопку выдаст ексепшин AttributeError
MrViktor
PEHDOM
Или вы име ввиду коннекты к виджету?
Да, именно про это спросил.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB