立秋6789 2023-11-11 13:15 采纳率: 89.7%
浏览 6

python装饰器闪退pyqt

pyqt 文件对话框使用装饰器后闪退

装饰器代码,测量函数运行时间
    def timer_decorator(func):
        def wrapper(*args, **kwargs):
            start_time = time.time()
            result = func(*args, **kwargs)
            end_time = time.time()
            print(f"{func.__name__} took {end_time - start_time:.2f} seconds to execute.")
            return result

        return wrapper

涉及到两个函数有异常,其他函数正常
有问题的两个函数,一个是文件打开,一个是文件另存为
    def open(self):
        print("打开")
        """选择文件对话框"""
        # QFileDialog组件定义
        fileDialog = QFileDialog(self)
        # QFileDialog组件设置
        fileDialog.setWindowTitle("选择文件")  # 设置对话框标题
        fileDialog.setFileMode(QFileDialog.AnyFile)  # 设置能打开文件的格式
        fileDialog.setDirectory(r'C:\Users\Administrator\Desktop\CTX')  # 设置默认打开路径
        fileDialog.setNameFilter("数据源(*.csv *.xlsx *.xls *.txt)")  # 按文件名过滤
        self.file_pa = fileDialog.exec()  # 窗口显示,返回文件路径
        if self.file_pa and fileDialog.selectedFiles():
            print("选择文件成功:{}".format(fileDialog.selectedFiles()[0]))
            self.file_path = fileDialog.selectedFiles()[0]
            self.read()


    def saveas(self):
        # 重新选择文件路径,重新确定文件名
        """文件另存对话框"""
        file_path, file_type = QFileDialog.getSaveFileName(self, '文件保存', r'C:\Users\Administrator\Desktop\CTX',
                                                           '文本文档(*.txt);;Excel 工作簿(*.xlsx);;Excel 97-2003工作簿(*.xls;;CSV (逗号分隔)(*.csv')
        file_end = self.file_path.split(".")[-1]

        print(1111)
        # 读取表格数据,再存储到原路径
        rown = self.table.model().rowCount()
        print("rown", rown)
        coln = self.table.model().columnCount()
        # 用二维列表存储
        self.assave_date = []
        if file_end == "txt":
            text_list = self.Qtext.toPlainText()
            self.assave_date = text_list.split("\n")
            print("asdata", self.assave_date)
        else:

            for i in range(rown):
                l = []
                for j in range(coln):
                    item = self.table.model().item(i, j)
                    text = item.text()
                    l.append(text)
                self.assave_date.append(l)
        print("self.save_date", self.assave_date)
        if file_end in ("xlsx", "xls"):
            df = pd.DataFrame(self.assave_date)
            df = df.reset_index(drop=True)
            df.to_excel(file_path, index=False, header=None)
        if file_end == "csv":
            df = pd.DataFrame(self.assave_date)
            df = df.reset_index(drop=True)
            df.to_csv(file_path, index=False, header=None)

        if file_end == "txt":
            print("self.save_date", self.assave_date)
            print("file_path", file_path)
            df = pd.DataFrame(self.assave_date)
            df = df.reset_index(drop=True)
            df.to_csv(file_path, sep='\t', index=False, header=None)
  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-11-11 16:03
    关注

    【相关推荐】



    • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7460523
    • 你也可以参考下这篇文章:python 和pyqt中 的 动态对象属性
    • 您还可以看一下 李宁老师的PyQt5开发与实战视频教程课程中的 设置控件之间的伙伴关系小节, 巩固相关知识点
    • 除此之外, 这篇博客: python-pyqt安装及使用中的 使用 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:

      工具–>External Tools–>Qt designer 可以打开qt编辑界面
      工具位置
      我们选择新建空窗体并保存到python项目目录下
      新建窗体
      此时在pycharm中可以看到qt生成的ui文件
      ui文件
      我们选中文件,使用前面添加的pyUIc工具将其转化为python代码
      转化代码
      在已有代码最后添加如下代码即可运行:

      import sys
      from PyQt5.QtWidgets import QApplication, QMainWindow
      if __name__ == '__main__':
         app = QApplication(sys.argv)
         MainWindow = QMainWindow()
         ui = Ui_MainWindow()
         ui.setupUi(MainWindow)
         MainWindow.show()
         sys.exit(app.exec_())
      

      选择运行后即可看到先前设定的界面
      界面显示


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 11月11日

悬赏问题

  • ¥66 关于川崎机器人调速问题
  • ¥15 winFrom界面无法打开
  • ¥15 crossover21 ARM64版本安装软件问题
  • ¥15 mymetaobjecthandler没有进入
  • ¥15 mmo能不能做客户端怪物
  • ¥15 osm下载到arcgis出错
  • ¥15 Dell g15 每次打开eiq portal后3分钟内自动退出
  • ¥200 使用python编写程序,采用socket方式获取网页实时刷新的数据,能定时print()出来就行。
  • ¥15 matlab如何根据图片中的公式绘制e和v的曲线图
  • ¥15 我想用Python(Django)+Vue搭建一个用户登录界面,但是在运行npm run serve时报错了如何解决?