def list1_selected_items(self): selected_items = self.listWidget.selectedItems() list_1 = [item.text() for item in selected_items] print(list_1) for item in list_1: self.tableWidget.setRowCount(0) for i in range(20): data0 = worksheet02.cell(i+2, 2).value if data0 == item: print(data0) for j in range(5): room_name = worksheet02.cell(i+2, j+3).value if room_name == None: pass else: print(room_name) row = self.tableWidget.rowCount() self.tableWidget.insertRow(row) self.tableWidget.setItem(row, 0, QTableWidgetItem(room_name));在以上代码中,为什么当listwidget多选时,tablewidget只添加了其中一个的对于内容
时间: 2024-02-10 08:16:58 浏览: 76
根据代码,每次执行`self.tableWidget.setRowCount(0)`都会将表格的行数设为0,所以每次循环添加数据时都会覆盖之前的数据,导致只显示了最后一个选中项的内容。解决方法是在循环添加数据前,先将表格的行数设为选中项的总数,即`self.tableWidget.setRowCount(len(list_1))`。这样就能保证每个选中项对应的内容都能添加到表格中。
相关问题
基于pyside6库写一段代码。创建一个widget,widget中设置一个有5行的可多选的listwidget,一个pushbutton,点击pushbutton后,print listwidget中所有的选中项。
好的,以下是您所需的代码:
```python
from PySide6.QtWidgets import QApplication, QWidget, QListWidget, QPushButton, QVBoxLayout
import sys
class MyWidget(QWidget):
def __init__(self):
super().__init__()
# 创建ListWidget
self.list_widget = QListWidget(self)
self.list_widget.addItems(['item1', 'item2', 'item3', 'item4', 'item5'])
self.list_widget.setSelectionMode(QListWidget.MultiSelection)
# 创建PushButton
self.button = QPushButton('Print Selected Items', self)
self.button.clicked.connect(self.print_selected_items)
# 布局设置
layout = QVBoxLayout(self)
layout.addWidget(self.list_widget)
layout.addWidget(self.button)
def print_selected_items(self):
selected_items = self.list_widget.selectedItems()
print([item.text() for item in selected_items])
if __name__ == '__main__':
app = QApplication(sys.argv)
widget = MyWidget()
widget.show()
sys.exit(app.exec_())
```
这段代码创建了一个 `MyWidget` 类,它继承自 `QWidget`。在 `MyWidget` 中,我们创建了一个 `QListWidget`,并将其设置为可多选的。然后创建了一个PushButton,当它被点击时,会调用 `print_selected_items` 方法。在 `print_selected_items` 方法中,我们获取了所有被选中的项,并将它们的文本输出到控制台。
最后,我们使用 `QApplication` 和 `sys` 模块来启动应用程序,并将 `MyWidget` 实例化并显示在屏幕上。
以上代码中如何设置list Widget的多选方式
可以通过设置QListWidget的选择模式来实现多选功能。QListWidget提供了三种选择模式,分别为SingleSelection、MultiSelection、ExtendedSelection。其中,SingleSelection表示只能选中一个项目,MultiSelection表示可以同时选中多个项目,但不能按住Ctrl键进行非连续选择,ExtendedSelection表示可以同时选中多个项目,并且可以按住Ctrl键进行非连续选择。
在我们的示例代码中,如果要实现多选功能,可以在MainWindow的构造函数中添加如下代码来设置QListWidget的选择模式:
```python
self.list_widget.setSelectionMode(QListWidget.MultiSelection)
```
这样,就可以使QListWidget支持多选了。同时,我们需要在on_confirm_button_clicked槽函数中获取所有已选中的项目,可以使用QListWidget的selectedItems()方法来获取所有已选中的项目,示例代码如下:
```python
def on_confirm_button_clicked(self):
# 获取A、B、C的选择状态
is_checked_a = self.checkbox_a.isChecked()
is_checked_b = self.checkbox_b.isChecked()
is_checked_c = self.checkbox_c.isChecked()
# 更新QListWidget中的数据
self.list_widget.clear()
if is_checked_a:
self.list_widget.addItems(["A1", "A2", "A3"])
if is_checked_b:
self.list_widget.addItems(["B1", "B2", "B3"])
if is_checked_c:
self.list_widget.addItems(["C1", "C2", "C3"])
# 获取所有已选中的项目
selected_items = self.list_widget.selectedItems()
for item in selected_items:
print(item.text())
```
在这个示例代码中,我们首先设置了QListWidget的选择模式为MultiSelection,然后在on_confirm_button_clicked槽函数中使用selectedItems()方法获取所有已选中的项目,并遍历输出它们的文本内容。
阅读全文