私は PyQt4 (バージョン 4.4.4 を使用しています) を学んでおり、Python (Python 2.5) は初めてです。QListWidget と QPushButton を備えた GUI があります。ユーザーがクリックしてリスト内のエントリを選択し、QPushButton をクリックすると、選択したエントリが消えます (QList から削除されます)。私は 1 週間以上この問題に頭を悩ませてきました。助けていただければ幸いです。
現在、GUI が表示され、さまざまなリスト項目を選択できます (現在は一度に 1 つだけです) が、QPushButton をクリックしても何も起こりません。選択色が青から灰色に変わりますが、エントリは削除されません。コマンド プロンプトにエラーは表示されません (Windows 7)。
QPushButton のスロットとして使用している関数 remove() を定義しました。QPushButton.connect は Qt Signal to Python Slot に対して正しく定義されていると思いますが、同様の問題に対する回答で見たものに基づいていますが、アイテムは削除されていません。ただし、削除機能はトリガーされていません。関数内に print ステートメントがありますが、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())
...
画像を投稿しようとしましたが、評判が十分ではありません。画像が役立つと思われる場合は、お知らせください。送信できます。