【发布时间】:2019-05-04 23:44:18
【问题描述】:
单击CustomFormWidget 中的按钮后,我正在尝试更新/刷新 QListWidget。
我想要做的是当我单击CustomFormWidget 中的按钮时,它会更新ParentWid 中的类变量数据,然后重建/更新/刷新ParentWid.ui.listWidget。我应该在哪里以及如何添加这个逻辑。我应该添加到我的CustomFormWidget.on_click 方法还是应该在ParentWid 中设置我的逻辑?
到目前为止,我的代码如下所示:
from PyQt5 import QtCore, QtGui, QtWidgets
class ParentWid(QtWidgets.QDialog):
data = [
{
'id': 1,
'name': 'pkg-foo',
'version': '0.1',
'installed': False
},
{
'id': 2,
'name': 'pkg-bar',
'version': '0.1',
'installed': False
}
]
def __init__(self, parent=None):
super(ParentWid, self).__init__(parent)
self.ui = Ui_ParentWidget()
self.ui.setupUi(self)
self.set_widget_data()
@classmethod
def update_installed_packages(cls, value):
for item in ParentWid.data:
if item["id"] == value:
item["installed"] = not item["installed"]
def set_widget_data(self):
for item in ParentWid.data:
custFormItem = CustomFormWidget(item)
lst_item = QtWidgets.QListWidgetItem()
self.ui.listWidget.insertItem(
self.ui.listWidget.count(),
lst_item
)
self.ui.listWidget.setItemWidget(lst_item, custFormItem)
lst_item.setSizeHint(custFormItem.sizeHint())
class CustomFormWidget(QtWidgets.QWidget):
def __init__(self, data, parent=None):
super(CustomFormWidget, self).__init__(parent)
self.ui = Ui_Form()
self.ui.setupUi(self)
self.data = data
self.ui.pkg_name.setText(self.data['name'])
self.ui.pkg_version.setText(self.data['version'])
if self.data["installed"] is True:
self.ui.install_btn.setText("Installed")
self.ui.install_btn.setEnabled(False)
self.ui.install_btn.clicked.connect(self.on_click)
def on_click(self):
print('installed pkg')
## install LOGIG
ParentWid.update_installed_packages(self.data["id"])
【问题讨论】:
标签: python pyqt pyqt5 qlistwidget