Я изучаю PyQt4 (я использую версию 4.4.4), и я новичок в Python (Python 2.5). У меня есть графический интерфейс с QListWidget и QPushButton. Я хочу, чтобы пользователь мог щелкнуть, чтобы выбрать запись в списке, а затем щелкнуть QPushButton и удалить выбранную запись (удалить ее из QList). Я бился головой об этой проблеме больше недели, и я был бы очень признателен за помощь.
В настоящее время появляется мой графический интерфейс, и я могу выбирать разные элементы списка (только по одному прямо сейчас), но когда я нажимаю кнопку QPushButton, ничего не происходит. Цвет выделения меняется с синего на серый, но запись не удаляется. В командной строке (Windows 7) ошибки не отображаются.
Я определил функцию remove (), которую использую как слот для QPushButton. Я считаю, что QPushButton.connect определен правильно для Qt Signal to Python Slot, основываясь на том, что я видел в ответах на аналогичные проблемы, но элементы не удаляются. Однако функция удаления даже не запускается. У меня есть оператор печати внутри функции, но он не вызывается, когда я нажимаю кнопку QPushButton, поэтому я знаю, что функция не вызывается.
Вот мой самый последний код: (Я прочитал очень напыщенный пост на meta-SO о больших блоках кода, поэтому я сократил его до тех частей, которые я считаю важными: создание списка, создание кнопки и удалить функцию, которую я пытаюсь использовать в качестве слота. Я оставил в комментариях, что это за другие разделы, поэтому, если вы думаете, что я упустил что-то, что могло бы помочь, дайте мне знать, и я добавлю это обратно)
class questionGUI(QtGui.QWidget):
#This class is the window of the gui.
def __init__(self):
super(questionGUI,self).__init__()
#Layout
grid = QtGui.QGridLayout()
grid.setSpacing(10)
#Labels Needed
...
#Question List
self.qList = QtGui.QListWidget()
#print self.qList
self.qList.setSelectionMode(QtGui.QAbstractItemView.SingleSelection)
entries = ['[Pick Image] <Default>','[Slider Question] <Default>', '[Comment Box] <Default>']
for i in entries:
item = QtGui.QListWidgetItem(i)
self.qList.addItem(item)
#Type select
...
#Text insert Needed
...
#Buttons Needed
deleteButton = QtGui.QPushButton('Delete Question')
deleteButton.connect(deleteButton,QtCore.SIGNAL('itemClicked(clicked)'),lambda: self.remove)
addQuestionButton = QtGui.QPushButton('Add Question')
...
doneButton = QtGui.QPushButton('Done')
...
#Parameters Needed
...
#Layout Placement and Window dimensions
...
def addQuestion(self):
...
def remove(self):
print 'remove triggered'
print self.qList.currentItem()
self.qList.removeItemWidget(self.qList.currentItem())
...
Я пытался опубликовать изображение, но у меня недостаточно репутации. Если вы считаете, что изображение было бы полезным, дайте мне знать, и я отправлю его вам.