PyQt 在 ListWidget 中获取特定值
Posted
技术标签:
【中文标题】PyQt 在 ListWidget 中获取特定值【英文标题】:PyQt Get specific value in ListWidget 【发布时间】:2016-11-22 08:02:11 【问题描述】:我是 python 和 pyqt/pyside 的新手...
我使 customwidget 类由 2 个标签(标题和描述)组成,这是稍后添加到 Listwidget 的示例实例 ...
这是完整的干净代码(pyside maya)
import PySide.QtCore as qc
import PySide.QtGui as qg
class CustomQWidget (qg.QWidget):
def __init__ (self, parent = None):
super(CustomQWidget, self).__init__(parent)
self.textQVBoxLayout = qg.QVBoxLayout()
self.titleLabel = qg.QLabel()
self.description = qg.QLabel()
self.textQVBoxLayout.addWidget(self.titleLabel)
self.textQVBoxLayout.addWidget(self.description)
self.setLayout(self.textQVBoxLayout)
def setTitle (self, text):
self.titleLabel.setText(text)
def setDescription (self, text):
self.description.setText(text)
class example_ui(qg.QDialog):
def __init__(self):
qg.QDialog.__init__(self)
self.myQListWidget = qg.QListWidget(self)
self.myQListWidget.currentItemChanged.connect(self.getTitleValue)
self.myQListWidget.setGeometry(qc.QRect(0,0,200,300))
# make instance customwidget item (just one)------
instance_1 = CustomQWidget()
instance_1.setTitle('First title')
instance_1.setDescription('this is a sample desc')
myQListWidgetItem = qg.QListWidgetItem(self.myQListWidget)
myQListWidgetItem.setSizeHint(instance_1.sizeHint())
self.myQListWidget.addItem(myQListWidgetItem)
self.myQListWidget.setItemWidget(myQListWidgetItem, instance_1)
def getTitleValue(self,val):
# i make assume something like below but didnt work
# print (self.myQListWidget.currentItem.titleLabel.text()
return 0
dialog = example_ui()
dialog.show()
现在在 getTitleValue
函数中,当我更改选择时如何获取 Title 和 desc 值?
【问题讨论】:
【参考方案1】:您应该记住,列表项和相应的小部件并不相同。幸运的是,QListWidget
会跟踪它们并让您访问显示的小部件(如果您提供列表项):
class example_ui(qg.QDialog):
def getTitleValue(self,val):
# parameter val is actually the same as self.myQListWidget.currentItem
selected_widget = self.myQListWidget.itemWidget(val)
print selected_widget.titleLabel.text()
return 0
旁注:我必须添加一个主循环才能完全执行应用程序:
import sys # to give Qt access to parameters
# ... class definitions etc. ...
app = qg.QApplication(sys.argv)
dialog = example_ui()
dialog.show()
exec_status = app.exec_() # main loop
【讨论】:
感谢 Sanyok 抽出宝贵时间,我现在明白了,注意:我在 Maya 中运行代码,很好,如果想直接从 python 运行,则需要一个主循环(就像你输入的那样)。谢谢以上是关于PyQt 在 ListWidget 中获取特定值的主要内容,如果未能解决你的问题,请参考以下文章
Python:如何在 PyQt 中查询 QListWidget 中的多个选定项
PyQt4:将项目从一个 QListWidget 移动到另一个