将UI文件转换为Python后编写打开文件代码-QTabWidget [重复]

Posted

技术标签:

【中文标题】将UI文件转换为Python后编写打开文件代码-QTabWidget [重复]【英文标题】:Writing open file code after converted UI file to Python - QTabWidget [duplicate] 【发布时间】:2020-07-05 19:32:41 【问题描述】:

首先我使用 QT Designer 创建了 UI 文件,在该主窗口中我添加了带有 4 个选项卡的 QTabWidget。在第一个选项卡中,我添加了行编辑和按钮来选择文件,请看下面:

后来我将 UI 文件转换为 python 文件:

class Ui_MainWindow(object):

def setupUi(self, MainWindow):
    MainWindow.setObjectName("Application")
    MainWindow.setWindowIcon(QtGui.QIcon("ldp.png"))
    MainWindow.resize(1393, 704)
    self.centralwidget = QtWidgets.QWidget(MainWindow)
    self.centralwidget.setObjectName("centralwidget")
    self.verticalLayout = QtWidgets.QVBoxLayout(self.centralwidget)
    self.verticalLayout.setObjectName("verticalLayout")
    self.gridLayout = QtWidgets.QGridLayout()
    self.gridLayout.setObjectName("gridLayout")
    self.widget = QtWidgets.QWidget(self.centralwidget)
    self.widget.setStyleSheet("\n"
    "background-color: rgb(141, 141, 141);")
    self.widget.setObjectName("widget")
    self.gridLayout.addWidget(self.widget, 0, 0, 1, 1)

    #Data_Tab:
    self.tabWidget = QtWidgets.QTabWidget(self.centralwidget)
    self.tabWidget.setObjectName("tabWidget")
    self.Data_Tab = QtWidgets.QWidget()
    self.Data_Tab.setObjectName("Data_Tab")

    self.vLayout = QtWidgets.QVBoxLayout(self.Data_Tab)
    self.hLayout = QtWidgets.QHBoxLayout()
    self.Line_Edit = QtWidgets.QLineEdit(self.Data_Tab)
    self.hLayout.addWidget(self.Line_Edit)
    self.select_File = QtWidgets.QPushButton(“Select File”, self.Data_Tab)
    self.hLayout.addWidget(self.select_File)
    self.vLayout.addLayout(self.hLayout)
    self.select_File.clicked.connect(self.loading)

 .....      
  
 def loading(self):
    fileName, _ = QtWidgets.QFileDialog.getOpenFileName(self, "Open File", "C:/", "CSV Files 
    (*.csv)");
    self.Line_Edit.setText(fileName)

上面的代码看起来不错,但是当我在运行代码后单击选择文件按钮时。我没有得到打开的文件窗口,而是应用程序自动关闭而没有任何错误。

即使我尝试使用 Mainwindow、object、Ui_Mainwindow 而不是将参数作为 self 传递。但是没有用。谁能告诉我我哪里做错了。

注意:我在这里只添加了必需的代码,而不是完整的代码。

【问题讨论】:

PyQt 应用程序往往会默默地失败 - 如果发生异常,程序将直接关闭,而不会让您知道失败的地方。您可能想考虑编写自己的异常处理程序,以便确定异常的原因。谷歌搜索“pyqt5 sys.excepthook”之类的东西,这应该会给你一些例子。 1) 我建议您从控制台运行脚本以获取错误消息,2) 如果需要帮助,您必须提供 minimal reproducible example 【参考方案1】:

我终于得到了答案。感谢您的建议@eyllanesc,@paulM

我对加载功能做了以下更改:

   def loading(self):
        options = QtWidgets.QFileDialog.Options()
        fileName, _ = QtWidgets.QFileDialog.getOpenFileName(None, "Open File", "C:/", 
               "CSV Files (*.csv)", options=options);

之前,我没有使用文件对话框选项,也没有使用 None,而是通过 self.现在,我对其进行了更改,并且我的代码运行良好。

【讨论】:

以上是关于将UI文件转换为Python后编写打开文件代码-QTabWidget [重复]的主要内容,如果未能解决你的问题,请参考以下文章

用Python编写录屏程序将播放的视频用截屏方法转换为多帧图像编辑后保存为GIF格式动图文件

用Python编写录屏程序将播放的视频用截屏方法转换为多帧图像编辑后保存为GIF格式动图文件

Qt读取ANSI格式文件——利用QTextCodec将其他编码格式的QByteArray转换为Unicode格式,或者从文件中读出后直接做转换

将 .ui 文件(使用 PyQT4 制作)转换为 python 文件时出错

使用pyqt5将QT的ui文件转化为py文件

将 .ui 转换为 py 文件 PyQt5 时出错