将 UI 文件转换为 Python 后写入打开文件代码 - QTabWidget
Writing open file code after converted UI file to Python - QTabWidget
首先,我使用 QT Designer 创建了 UI 文件,在主文件中 window 我添加了带有 4 个选项卡的 QTabWidget。在第一个选项卡中,我向 select 文件添加了行编辑和按钮,请看下面:
后来我将 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)
上面的代码看起来不错,但是当我在 运行 代码之后单击 select 文件按钮时。我没有得到打开的文件 window 而是应用程序在没有任何错误的情况下自动关闭。
甚至我尝试使用 Mainwindow、object、Ui_Mainwindow 而不是将参数作为 self 传递。但是没有用。谁能告诉我哪里做错了。
注意:我在这里只添加了必需的代码,而不是完整的代码。
终于找到答案了。感谢您的建议@eyllanesc,@paulM
我在加载函数中做了以下更改:
def loading(self):
options = QtWidgets.QFileDialog.Options()
fileName, _ = QtWidgets.QFileDialog.getOpenFileName(None, "Open File", "C:/",
"CSV Files (*.csv)", options=options);
早些时候,我没有使用文件对话框选项,也没有使用 None,通过了 self.现在,我更改了它,我的代码工作正常。
首先,我使用 QT Designer 创建了 UI 文件,在主文件中 window 我添加了带有 4 个选项卡的 QTabWidget。在第一个选项卡中,我向 select 文件添加了行编辑和按钮,请看下面:
后来我将 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)
上面的代码看起来不错,但是当我在 运行 代码之后单击 select 文件按钮时。我没有得到打开的文件 window 而是应用程序在没有任何错误的情况下自动关闭。
甚至我尝试使用 Mainwindow、object、Ui_Mainwindow 而不是将参数作为 self 传递。但是没有用。谁能告诉我哪里做错了。
注意:我在这里只添加了必需的代码,而不是完整的代码。
终于找到答案了。感谢您的建议@eyllanesc,@paulM
我在加载函数中做了以下更改:
def loading(self):
options = QtWidgets.QFileDialog.Options()
fileName, _ = QtWidgets.QFileDialog.getOpenFileName(None, "Open File", "C:/",
"CSV Files (*.csv)", options=options);
早些时候,我没有使用文件对话框选项,也没有使用 None,通过了 self.现在,我更改了它,我的代码工作正常。