pyqt复选框的名称
时间: 2024-07-28 17:01:08 浏览: 83
PyQt中的复选框通常被称为`QCheckBox`。它是 PyQt 库中的控件,用于让用户选择一项或多项选项。每个 `QCheckBox` 对象都有一个名字,这个名字可以在创建时作为参数传递给构造函数,如 `QCheckBox('选择项名')`,也可以之后通过 `objectName()` 属性来设置或获取。复选框的主要功能是用户可以独立地勾选或取消勾选它,表示是否选择了相应的选项。
相关问题
pyqt5 读取列表中的数据 并生成相对应的复选框 并在复选框右边显示对应复选框名称 并将其作为窗口展示
可以使用QListWidget来显示列表中的数据,并使用QCheckBox来生成相应的复选框,并使用QLabel来显示复选框名称。下面是一个完整的示例代码:
```python
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QListWidget, QCheckBox, QLabel, QApplication
class MyWidget(QWidget):
def __init__(self, data):
super().__init__()
# 创建一个QListWidget
list_widget = QListWidget(self)
# 循环遍历数据并添加到QListWidget中
for item in data:
# 创建一个QCheckBox
checkbox = QCheckBox()
checkbox.setText(item)
# 创建一个QLabel来显示复选框名称
label = QLabel(item)
# 创建一个水平布局
layout = QHBoxLayout()
# 将复选框和标签添加到布局中
layout.addWidget(checkbox)
layout.addWidget(label)
# 将布局添加到QListWidget中
item_widget = QWidget()
item_widget.setLayout(layout)
list_widget.addItem(item_widget)
# 创建一个垂直布局
layout = QVBoxLayout(self)
# 将QListWidget添加到布局中
layout.addWidget(list_widget)
# 设置主窗口的布局
self.setLayout(layout)
if __name__ == '__main__':
# 假设这是从列表中读取的数据
data = ["Apple", "Banana", "Orange"]
# 创建一个应用程序对象
app = QApplication([])
# 创建一个窗口对象
window = MyWidget(data)
# 显示窗口
window.show()
# 运行应用程序
app.exec_()
```
在这个示例中,我们首先创建一个QListWidget,然后循环遍历数据并为每个项目创建一个QCheckBox和一个QLabel,并将它们添加到一个水平布局中。然后,我们将水平布局添加到一个QWidget中,并将该QWidget添加到QListWidget中。最后,我们将QListWidget添加到主窗口的布局中,并显示窗口。这将在窗口中显示一个包含复选框和标签的列表。
pyqt5中画好的树形结构复选框都是没选中状态,当手动选中一些节点时,复选框会显示选中,将选中的复选框里内容标题填写到json中,当取消选中复选框里的勾会取消,对应的json文件里的内容也会更改,用python实现
可以使用QTreeWidget和QTreeWidgetItem实现树形结构的显示和复选框功能,结合写入和读取json文件实现保存和修改数据。
具体步骤如下:
1. 创建一个QTreeWidget对象和根节点QTreeWidgetItem对象。
```python
# 创建QTreeWidget对象和根节点对象
tree_widget = QTreeWidget()
root_node = QTreeWidgetItem(tree_widget)
```
2. 为根节点设置展示名称和复选框。
```python
# 设置根节点名称和复选框
root_node.setText(0, "根节点")
root_node.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEditable | Qt.ItemIsEnabled | Qt.ItemIsUserCheckable)
root_node.setCheckState(0, Qt.Unchecked)
```
3. 向根节点添加子节点,设置子节点名称和复选框。
```python
# 添加子节点,设置名称和复选框
child_node = QTreeWidgetItem(root_node)
child_node.setText(0, "子节点")
child_node.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEditable | Qt.ItemIsEnabled | Qt.ItemIsUserCheckable)
child_node.setCheckState(0, Qt.Unchecked)
```
4. 绑定QTreeWidgetItem的状态变化信号,当复选框选中时读取节点的名称和勾选状态,并保存到json文件中。
```python
# 绑定复选框状态变化信号
tree_widget.itemChanged.connect(lambda item, column: self.on_item_changed(item))
# 处理复选框状态变化
def on_item_changed(self, item):
if item.checkState(0) == Qt.Checked:
print(item.text(0), "选中")
# 将节点名称和勾选状态写入json文件
else:
print(item.text(0), "未选中")
# 将节点名称和勾选状态从json文件中删除
```
5. 读取json文件中的数据,初始化树形结构节点的勾选状态。
```python
# 初始化树形结构勾选状态
def init_tree_widget(self):
# 读取json文件中的内容,设置节点勾选状态
# 遍历所有节点,设置勾选状态
for i in range(tree_widget.topLevelItemCount()):
item = tree_widget.topLevelItem(i)
if item.text(0) in selected_items:
item.setCheckState(0, Qt.Checked)
```
完整的代码示例如下:
```python
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
import json
class TreeWidget(QWidget):
def __init__(self):
super().__init__()
# 创建QTreeWidget对象和根节点对象
tree_widget = QTreeWidget()
root_node = QTreeWidgetItem(tree_widget)
# 设置根节点名称和复选框
root_node.setText(0, "根节点")
root_node.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEditable | Qt.ItemIsEnabled | Qt.ItemIsUserCheckable)
root_node.setCheckState(0, Qt.Unchecked)
# 添加子节点,设置名称和复选框
child_node = QTreeWidgetItem(root_node)
child_node.setText(0, "子节点")
child_node.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEditable | Qt.ItemIsEnabled | Qt.ItemIsUserCheckable)
child_node.setCheckState(0, Qt.Unchecked)
# 添加树形结构,设置大小
layout = QVBoxLayout()
layout.addWidget(tree_widget)
self.setLayout(layout)
self.setMinimumSize(300, 400)
# 绑定复选框状态变化信号
tree_widget.itemChanged.connect(lambda item, column: self.on_item_changed(item))
# 初始化树形结构勾选状态
selected_items = self.get_selected_items()
self.init_tree_widget(tree_widget, selected_items)
# 处理复选框状态变化
def on_item_changed(self, item):
if item.checkState(0) == Qt.Checked:
print(item.text(0), "选中")
# 将节点名称和勾选状态写入json文件
else:
print(item.text(0), "未选中")
# 将节点名称和勾选状态从json文件中删除
# 初始化树形结构勾选状态
def init_tree_widget(self, tree_widget, selected_items):
# 遍历所有节点,设置勾选状态
for i in range(tree_widget.topLevelItemCount()):
item = tree_widget.topLevelItem(i)
if item.text(0) in selected_items:
item.setCheckState(0, Qt.Checked)
# 获取已选中的节点列表
def get_selected_items(self):
with open("data.json", "r", encoding="utf-8") as f:
data = json.load(f)
return data.get("selected_items", [])
if __name__ == '__main__':
app = QApplication([])
tree_widget = TreeWidget()
tree_widget.show()
app.exec_()
```
阅读全文