You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyQt开发:QTextEdit数据获取及Excel保存功能实现问题求助

解决QTextEdit内容保存到Excel的问题

你的代码存在几个关键问题,导致无法实现点击保存按钮获取QTextEdit内容并保存的功能,以下是修正方案:

问题点说明

  • 信号连接错误:save_data函数内的self.save.clicked.connect(self.save_data())是直接执行函数而非绑定信号,且连接逻辑不应放在保存函数内部,会导致递归调用和重复绑定。
  • 冗余代码:setupUi中的self.name.toPlainText()调用无实际作用,未保存返回值。
  • 缺失依赖导入:使用pandas但未导入,运行时会抛出NameError。

修正后的完整代码

import sys
import pandas as pd
from PyQt5 import QtWidgets, QtCore

class Ui_mainWindow(object):
    def setupUi(self, mainWindow):
        self.centralwidget = QtWidgets.QWidget(mainWindow)
        mainWindow.setCentralWidget(self.centralwidget)
        
        self.name = QtWidgets.QTextEdit(self.centralwidget)
        self.name.setGeometry(QtCore.QRect(1090, 40, 171, 31))
        self.name.setStyleSheet("""
            background: white;
            border-radius: 5px;
            border-style: solid;
            border-width: 1px;
        """)
        self.name.setObjectName("name")
        
        # Save button
        self.save = QtWidgets.QPushButton(self.centralwidget)
        self.save.setGeometry(QtCore.QRect(10, 670, 93, 28))
        self.save.setStyleSheet("""
            background: white;
            border-radius: 14px;
            border-style: solid;
            border-width: 2px;
            border-color: qlineargradient(x1:0, y1:0, x2:1, y2:0, stop: 0 blue, stop: 1 red);
        """)
        self.save.setObjectName("save")
        
        # 绑定按钮点击信号到保存函数
        self.save.clicked.connect(self.save_data)

    def get_data(self):
        # 获取QTextEdit中的内容
        name = self.name.toPlainText()
        return {"name": name}
    
    def save_data(self):
        # 获取数据并保存到Excel
        data = self.get_data()
        df = pd.DataFrame([data])
        df.to_excel("D:/data.xlsx", index=False)
    
if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    mainWindow = QtWidgets.QMainWindow()
    ui = Ui_mainWindow()
    ui.setupUi(mainWindow)
    mainWindow.show()
    sys.exit(app.exec_())

关键修改说明

  1. 添加信号绑定:在setupUi末尾添加self.save.clicked.connect(self.save_data),确保点击按钮时触发save_data函数,注意这里传入的是函数引用(不带括号),而非直接执行函数。
  2. 移除错误连接代码:删除save_data内部的self.save.clicked.connect(self.save_data()),避免递归调用和重复绑定信号。
  3. 补全依赖导入:添加import pandas as pd和必要的PyQt5模块导入,确保代码能正常运行。
  4. 清理冗余代码:移除setupUi中无用的self.name.toPlainText()调用。
  5. 优化样式表格式:调整样式表的写法,使其更易读。

内容的提问来源于stack exchange,提问作者Hitori620

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 19:45:02