Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » GUI
  • » Прошу о помощи!!!!Нужно удалить QLineEdit, но при попытке удаления приложение падает... [RSS Feed]

#1 Март 12, 2017 18:36:52

Agri
Зарегистрирован: 2017-03-12
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Прошу о помощи!!!!Нужно удалить QLineEdit, но при попытке удаления приложение падает...

             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 приложение и падает

Отредактировано Agri (Март 12, 2017 18:55:48)

Офлайн

#2 Март 12, 2017 21:11:48

vic57
Зарегистрирован: 2015-07-07
Сообщения: 893
Репутация: +  126  -
Профиль   Отправить e-mail  

Прошу о помощи!!!!Нужно удалить QLineEdit, но при попытке удаления приложение падает...

Офлайн

#3 Март 13, 2017 05:11:11

MrViktor
Зарегистрирован: 2017-03-09
Сообщения: 83
Репутация: +  8  -
Профиль   Отправить e-mail  

Прошу о помощи!!!!Нужно удалить QLineEdit, но при попытке удаления приложение падает...

Agri
Нужно удалить QLineEdit, но при попытке удаления приложение падает
Очень противоречивые чувства у меня вызывают данные действия. Для понимания, у Вас в приложении, к примеру при нажатии на кнопку удаляется виджет QLineEdit с формы? Если так, то мое мнение, это не правильный подход, логичней скрыть его или заблокировать на редактирование.

Отредактировано MrViktor (Март 13, 2017 05:12:31)

Офлайн

#4 Март 13, 2017 12:26:14

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Прошу о помощи!!!!Нужно удалить QLineEdit, но при попытке удаления приложение падает...

выложите запускабельный пример на котором повторяеться ошибка. Потому как тут гадать можно до бесконечности. Например я набросал простенький пример , все удаляеться корректно.

 # -*- 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_())



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Офлайн

#5 Март 13, 2017 13:00:19

MrViktor
Зарегистрирован: 2017-03-09
Сообщения: 83
Репутация: +  8  -
Профиль   Отправить e-mail  

Прошу о помощи!!!!Нужно удалить QLineEdit, но при попытке удаления приложение падает...

PEHDOM
А коннект надо удалять у удаляемого поля?
Это получается типа динамического интерфейса?

Офлайн

#6 Март 13, 2017 14:04:12

Agri
Зарегистрирован: 2017-03-12
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Прошу о помощи!!!!Нужно удалить QLineEdit, но при попытке удаления приложение падает...

MrViktor
Собственно промучившись еще пол дня, я сделал так self.workman_field.hide()

и еще по поводу disconnect как в моем случае правильно написать. а то я новичок в этом деле…

Отредактировано Agri (Март 13, 2017 14:06:15)

Офлайн

#7 Март 13, 2017 14:12:46

MrViktor
Зарегистрирован: 2017-03-09
Сообщения: 83
Репутация: +  8  -
Профиль   Отправить e-mail  

Прошу о помощи!!!!Нужно удалить QLineEdit, но при попытке удаления приложение падает...

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

Офлайн

#8 Март 13, 2017 16:19:49

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Прошу о помощи!!!!Нужно удалить QLineEdit, но при попытке удаления приложение падает...

MrViktor
А коннект надо удалять у удаляемого поля?
Да насколько я помню, КуТэ само удалит все конекты при удалении виджета.
Хотя всякое бывает, потому и просил полный текс на котором появляеться ошибка.

Или вы име ввиду коннекты к виджету?
допустим у вас есть текст
 self.button2.clicked.connect(lambda: print(self.lineEdit.text()))
то после lineEdit.deleteLater() оно никуда не денеться, и после удаления, нажатие на кнопку выдаст ексепшин AttributeError



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Март 13, 2017 16:28:31)

Офлайн

#9 Март 13, 2017 17:20:25

MrViktor
Зарегистрирован: 2017-03-09
Сообщения: 83
Репутация: +  8  -
Профиль   Отправить e-mail  

Прошу о помощи!!!!Нужно удалить QLineEdit, но при попытке удаления приложение падает...

PEHDOM
Или вы име ввиду коннекты к виджету?
Да, именно про это спросил.

Офлайн

  • Начало
  • » GUI
  • » Прошу о помощи!!!!Нужно удалить QLineEdit, но при попытке удаления приложение падает...[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version