第二天学 pyside2

我的

创建自己的txt

 

 

 

 

import os
import PySide2
dirname = os.path.dirname(PySide2.__file__)
plugin_path = os.path.join(dirname, 'plugins', 'platforms')
os.environ['QT_QPA_PLATFORM_PLUGIN_PATH'] = plugin_path
from PySide2.QtWidgets import QApplication, QMainWindow, QPushButton,  QPlainTextEdit,QMessageBox
# 初始化,窗口,按钮,文本框,弹窗

def  an():
    print("你点了记录按钮")
    info = textEdit.toPlainText()
    #接受文本内容
    print(info)
    with open("1.txt", "a") as f:
        data =f.write(info)
        f.write('\n')



def  xs():
    print("你点了显示按钮")
    with open("1.txt", "r", encoding='gb18030') as f:  # 打开文件
        data = f.read()  # 读取文件
        QMessageBox.about(window,'统计结果',
                f'''好学生有 :\n{data}''')
def  qc():
    print("你点了清空按钮")
    with open("1.txt", 'r+') as file:
        file.truncate(0)

app=QApplication([])
# 初始化

window = QMainWindow()
# 创建主窗口
window.resize(500, 400)
# 大小
window.move(610, 310)
# 窗口出现的位置
window.setWindowTitle("好好学习")
# 窗口名字


textEdit = QPlainTextEdit(window)
# 文本框(谁的)
textEdit.setPlaceholderText("请输入学生")
# 文本框提示
textEdit.move(10,25)
# 出现位置
textEdit.resize(300,350)
# 大小

button = QPushButton('记录', window)
# 按钮(提示,谁的)
button.move(350,50)
# 出现
button.clicked.connect(an)
# 当你点击了记录按钮,出发出信号,会从按钮这个地方跳到第9行(就相当调用只不过,调用之前有条件)

button1 = QPushButton('显示', window)
# 按钮(提示,谁的)
button1.move(350,110)
# 出现
button1.clicked.connect(xs)
# 当你点击了显示按钮,出发出信号

button2 = QPushButton('清空', window)
# 按钮(提示,谁的)
button2.move(350,80)
# 出现
button2.clicked.connect(qc)

window.show()
# 显示
app.exec_()
# 循环

<think>好的,我现在需要帮助用户了解QTableWidget的使用方法。首先,我得回忆一下自己之前过的Qt相关知识。QTableWidget是Qt中用于显示表格数据的一个控件,属于Model/View架构的一部分,但它是基于项的,比使用QTableView和自定义模型更简单一些。不过用户可能不了解这些,所以我需要从基础开始讲起。 首先,我应该介绍QTableWidget的基本概念,比如它是一个表格控件,可以用来显示和编辑二维数据。然后,可能需要分步骤说明如何创建、配置、添加数据、处理信号等。要确保结构清晰,按步骤来,这样用户容易跟随。 接下来,我需要考虑用户可能的应用场景,比如创建一个简单的表格,设置行列数,添加表头,插入数据,处理单元格的点击事件等。这些都是常见的操作,应该涵盖这些内容。 还要注意提到如何设置单元格的属性和样式,比如对齐方式、字体颜色、背景色等,这可能对用户有用。另外,可能还要提到如何调整行列的大小,比如设置自适应宽度或者手动调整。 然后,关于数据操作,比如获取或修改单元格的内容,遍历表格中的数据,以及如何添加自定义的控件到单元格中,比如按钮或复选框。这些高级功能可能会帮助用户更灵活地使用表格。 信号和槽的部分也很重要,用户可能需要响应单元格的变化,比如内容修改、选中单元格等事件,所以需要给出示例说明如何连接这些信号到槽函数。 还要注意潜在的问题,比如性能问题,当数据量大时,QTableWidget可能不如使用模型/视图高效,这时候可能需要提及QTableView和自定义模型的优势,但用户的问题是QTableWidget,所以可以稍微提到这点,但重点还是放在QTableWidget上。 另外,需要确保示例代码正确,符合PyQtPySide的语法,但用户没有明确说明使用哪个,可能需要统一用PyQt的示例,或者注明两者类似。同时,按照用户的要求,行内公式用$...$,独立公式用$$...$$,不过在这个问题中可能数公式较少,但如果有涉及到计算或示例中的数值,可能需要使用,比如设置行列数的例子。 需要检查是否有遗漏的常用功能,比如合并单元格、排序、右键菜单等,这些可能对用户有帮助,但根据时间限制,可能需要简要提及,或者放在高级用法中。 最后,组织内容时,要分步骤,如创建、基本设置、数据操作、信号处理、样式调整等,每个部分用标题分开,示例代码用代码块表示,并加上必要的注释。同时,提醒用户注意内存管理和性能问题,避免在处理大数据时出现卡顿。 总结一下,回答的结构应该是: 1. 简介 2. 基本使用步骤(创建、行列设置、表头) 3. 数据操作(插入、获取、修改) 4. 单元格属性和样式 5. 信号与槽 6. 高级功能(自定义控件、排序) 7. 注意事项(性能等) 这样用户能逐步习,从基础到高级,结构清晰。现在需要把这些内容用中文组织好,确保每个部分都有示例代码,并正确遵循LaTeX格式的要求,虽然在这个问题中可能用到的数公式不多,但如果有的话要正确应用。例如,在说明行数或列数的时候,可能用$m \times n$这样的表示,但需要按照用户的系统指令处理。</think>### QTableWidget 使用方法详解 QTableWidget 是 Qt 中用于显示和编辑二维表格数据的控件,适合中小规模数据场景。以下是详细使用步骤: --- #### 一、创建与基本配置 ```python from PyQt5.QtWidgets import QApplication, QTableWidget, QTableWidgetItem, QHeaderView # 1. 创建表格控件 table = QTableWidget() table.setRowCount(3) # 设置行数,例如:$3 \times 4$ 表格 table.setColumnCount(4) # 2. 设置表头 table.setHorizontalHeaderLabels(["姓名", "年龄", "性别", "职业"]) table.setVerticalHeaderLabels(["行1", "行2", "行3"]) # 3. 自适应列宽(可选) table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch) ``` --- #### 二、数据操作 1. **插入数据** ```python # 直接设置单元格内容 table.setItem(0, 0, QTableWidgetItem("张三")) table.setItem(0, 1, QTableWidgetItem("25")) # 批量填充 data = [ ["李四", "30", "男", "工程师"], ["王五", "28", "女", "设计师"] ] for row_idx, row_data in enumerate(data, start=1): # 从第2行开始 for col_idx, cell_data in enumerate(row_data): table.setItem(row_idx, col_idx, QTableWidgetItem(cell_data)) ``` 2. **获取/修改数据** ```python item = table.item(0, 0) # 获取单元格对象 print(item.text()) # 输出:张三 table.item(0, 1).setText("26") # 修改年龄为26 ``` --- #### 三、单元格属性与样式 ```python # 1. 对齐方式 item = QTableWidgetItem("居中文本") item.setTextAlignment(0x0004 | 0x0080) # 水平居中 + 垂直居中 # 2. 字体颜色/背景色 item.setForeground(QColor(255, 0, 0)) # 红色字体 item.setBackground(QColor(200, 200, 200)) # 灰色背景 # 3. 禁止编辑 table.setEditTriggers(QTableWidget.NoEditTriggers) ``` --- #### 四、信号与事件处理 ```python # 1. 单元格点击事件 table.cellClicked.connect(lambda row, col: print(f"点击:({row}, {col})")) # 2. 内容修改事件 table.cellChanged.connect(lambda row, col: print(f"修改内容为:{table.item(row, col).text()}")) ``` --- #### 五、高级功能 1. **嵌入控件** ```python from PyQt5.QtWidgets import QPushButton # 在单元格中添加按钮 btn = QPushButton("删除") btn.clicked.connect(lambda: table.removeRow(0)) # 点击删除第一行 table.setCellWidget(0, 3, btn) ``` 2. **排序与搜索** ```python # 启用排序 table.setSortingEnabled(True) # 按列搜索(示例:查找年龄>25的行) for row in range(table.rowCount()): age = int(table.item(row, 1).text()) table.setRowHidden(row, age <= 25) ``` --- #### 六、注意事项 1. **性能问题**:数据量超过 1000 行时,建议改用 `QTableView + QStandardItemModel`。 2. **内存管理**:避免频繁调用 `setRowCount()` 和 `setColumnCount()`。 3. **线程安全**:禁止在多线程中直接操作表格,需通过信号槽机制更新。 --- 通过上述步骤,您可快速实现表格展示、交互和样式定制。如需更复杂的模型操作(如数据库绑定),建议习 Model/View 架构中的 `QTableView`。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WangSaLe

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值