首页 > 编程语言 >PyQT5 QFileDialog文件操作程序崩溃处理

PyQT5 QFileDialog文件操作程序崩溃处理

时间:2023-04-12 14:12:50浏览次数:40  
标签:setObjectName 操作程序 self PyQT5 QtWidgets QFileDialog tab import MainWindow

最近用PyQT写个窗体工具,用到QFileDialog处理文件时程序就崩掉了,网上查的降版本,换32位解释器都尝试了都不靠谱,后面无意中看到一段示例代码终于解决了,记录一下,在给掉坑里的小伙伴做个参考。

原代码是用 qt 模板生成的,添加的构造方法:

# -*- coding: utf-8 -*-
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QMessageBox
from PyQt5.QtWidgets import QFileDialog
from PyQt5.QtWidgets import QWidget
import os
import time


class Ui_MainWindow(Object):
    def __init__(self):
        self.zh_CN = {}
        self.en_US = {}
        self.cwd = os.getcwd()

    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 600)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.tabWidget = QtWidgets.QTabWidget(self.centralwidget)
        self.tabWidget.setGeometry(QtCore.QRect(0, 0, 791, 551))
        self.tabWidget.setObjectName("tabWidget")
        

        self.tab = QtWidgets.QWidget()
        self.tab.setObjectName("tab")
        self.lineEdit = QtWidgets.QLineEdit(self.tab)
        self.lineEdit.setGeometry(QtCore.QRect(30, 40, 541, 31))
        self.lineEdit.setObjectName("lineEdit")
        self.pushButton = QtWidgets.QPushButton(self.tab)
        self.pushButton.setGeometry(QtCore.QRect(620, 40, 91, 31))
        self.pushButton.setObjectName("pushButton")
        self.pushButton.clicked.connect(self.openFolder)
        self.tabWidget.addTab(self.tab, "")
   

    def openFolder(self):
        dir_choose = QFileDialog.getExistingDirectory(self,"选取文件夹",self.cwd) 
        self.lineEdit.setText(str(dir_choose))


    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
		...

修改后代码:

# -*- coding: utf-8 -*-
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QMessageBox
from PyQt5.QtWidgets import QFileDialog
from PyQt5.QtWidgets import QWidget
import os
import time


class Ui_MainWindow(QWidget):
    def __init__(self):
        super(Ui_MainWindow, self).__init__()
        self.zh_CN = {}
        self.en_US = {}
        self.cwd = os.getcwd()

    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 600)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.tabWidget = QtWidgets.QTabWidget(self.centralwidget)
        self.tabWidget.setGeometry(QtCore.QRect(0, 0, 791, 551))
        self.tabWidget.setObjectName("tabWidget")
        

        self.tab = QtWidgets.QWidget()
        self.tab.setObjectName("tab")
        self.lineEdit = QtWidgets.QLineEdit(self.tab)
        self.lineEdit.setGeometry(QtCore.QRect(30, 40, 541, 31))
        self.lineEdit.setObjectName("lineEdit")
        self.pushButton = QtWidgets.QPushButton(self.tab)
        self.pushButton.setGeometry(QtCore.QRect(620, 40, 91, 31))
        self.pushButton.setObjectName("pushButton_4")
        self.pushButton.clicked.connect(self.openFolder)
        self.tabWidget.addTab(self.tab, "")
   

    def openFolder(self):
        dir_choose = QFileDialog.getExistingDirectory(self,"选取文件夹",self.cwd) 
        self.lineEdit.setText(str(dir_choose))


    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate

标签:setObjectName,操作程序,self,PyQT5,QtWidgets,QFileDialog,tab,import,MainWindow
From: https://www.cnblogs.com/cnxue/p/17309606.html

相关文章

  • PySide2或PyQt5 运行时提示This application failed to start because no Qt platform
    1.把PySide2或者PyQt5安装在解释器目录下的 \plugins\platforms 目录添加到环境变量Path中。比如,我的环境就是把下面这个路径加到环境变量 Path 中 c:\Python38\Lib\site-packages\PySide2\plugins\platforms 2. 确保环境变量中没有中文......
  • PyQt5 - 2
    1.什么是控件一个程序界面上的独立元素,一块矩形区域具备不同的功能,比如:用户点击,接收用户输入,展示内容,存放其它控件等2.常用控件2.1按钮QPushButton,普通按钮QCommandLinkButton,超链接按钮QRadioButton,单选按钮QCheckBox,多选按钮2.2输入控件2.2.1纯键盘输入......
  • PyQt5 - 1
    一、安装pipinstallPyQt5-ihttps://mirrors.aliyun.com/pypi/simple/出现错误安装下面的工具库:ERROR:FailedbuildingwheelforPyQt5-sipwgethttps://aka.ms/vs/17/release/vs_BuildTools.exe一、基本程序结构(一)导入相关模块(二)创建应用程序(三)控件的操作(四)执......
  • PyQt5学习 (4)--QAbstractButton(下)
    QAbstractBUtton:  所有按钮控件的基类  提供按钮的通用功能  继承自QWidget  属于抽象类别,不能直接去使用,必须借助于子类(除非你觉得子类不够用,想自定义一个按......
  • 使用PyQt5动态导入ui文件
    导库fromPyQt5.uicimport*核心代码self.ui=loadUi(r'xxxx文件路径xxxx',self)简单代码实例importsysfromPyQt5.uicimport*fromPyQt5.Q......
  • 【项目实战】基于Pthon+PyQt5的GUI点名程序(附完整源码)
    1、项目说明基于python+PyQt5的GUI点名程序项目实战项目需要安装pycharm社区版或专业版都可,以及项目所需的所有模块项目需要安装pyqt5、pywin32及其他一些模块安装命......
  • pyqt5 qt.ui文件转换为.py文件报错one input ui-file must be specified 解决方法
    我的原因是配置额外工具的时候忘记填写实参了,。,。,还有的老哥可能是.ui文件有空格,查资料的时候发现好像文件名有空格也不行"名称":这里可以自定义的"程序":选择的是"p......
  • 【项目实战】基于Python+PyQt5的GUI点餐系统(附完整源码)
    1、项目说明基于python+PyQt5的GUI点餐系统项目实战项目需要安装pycharm社区版或专业版都可,以及项目所需的所有模块项目需要安装PyQt5及其他一些模块(详见项目所需模块......
  • 让Python PYQT5使用微软流畅设计体系UI
    PyQt-Fluent-Widgets项目地址: https://github.com/zhiyiYo/PyQt-Fluent-Widgets总所周知,Python一般的UI(比如Tkinter)肥肠的丑陋,肥肠的不现代化。蛋是现在微软有流畅设......
  • 量化系统 GUI 库 PyQt5 基础以及使用技巧(上)
    量化系统GUI库PyQt5基础以及使用技巧(上)python流行的图形界面库PyQt:一个基于C++库Qt的Python库,提供了丰富的GUI工具和高度可定制的UI设计,也是很多商业应用程序的......