Я хочу, чтобы getOpenFileName открывала тот же файл автоматически после открытия файла. Я пробовал решение из этого , как заставить getOpenFileName запомнить последний путь открытия? , но это не сработало.
Я опубликовал код GUI и основной код. GetOpenFileName находится в def singleBrowse
мой текущий код:
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(1236, 887)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.gridLayout = QtWidgets.QGridLayout(self.centralwidget)
self.gridLayout.setObjectName("gridLayout")
self.tabWidget = QtWidgets.QTabWidget(self.centralwidget)
self.tabWidget.setLayoutDirection(QtCore.Qt.LeftToRight)
self.tabWidget.setTabPosition(QtWidgets.QTabWidget.South)
self.tabWidget.setTabShape(QtWidgets.QTabWidget.Rounded)
self.tabWidget.setUsesScrollButtons(False)
self.tabWidget.setObjectName("tabWidget")
self.inLons = QtWidgets.QWidget()
self.inLons.setObjectName("inLons")
self.gridLayout_2 = QtWidgets.QGridLayout(self.inLons)
self.gridLayout_2.setObjectName("gridLayout_2")
self.inLoanTable = QtWidgets.QTableWidget(self.inLons)
self.inLoanTable.setObjectName("inLoanTable")
self.inLoanTable.setColumnCount(0)
self.inLoanTable.setRowCount(0)
self.gridLayout_2.addWidget(self.inLoanTable, 2, 0, 1, 8)
self.save = QtWidgets.QPushButton(self.inLons)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.save.sizePolicy().hasHeightForWidth())
self.save.setSizePolicy(sizePolicy)
self.save.setObjectName("save")
self.gridLayout_2.addWidget(self.save, 3, 6, 1, 1)
self.exit = QtWidgets.QPushButton(self.inLons)
self.exit.setObjectName("exit")
self.gridLayout_2.addWidget(self.exit, 3, 7, 1, 1)
self.openFile = QtWidgets.QPushButton(self.inLons)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.openFile.sizePolicy().hasHeightForWidth())
self.openFile.setSizePolicy(sizePolicy)
self.openFile.setObjectName("openFile")
self.gridLayout_2.addWidget(self.openFile, 0, 1, 1, 1)
self.tabWidget.addTab(self.inLons, "")
self.inGifts = QtWidgets.QWidget()
self.inGifts.setObjectName("inGifts")
self.gridLayout_3 = QtWidgets.QGridLayout(self.inGifts)
self.gridLayout_3.setObjectName("gridLayout_3")
self.tabWidget.addTab(self.inGifts, "")
self.inLoansReq = QtWidgets.QWidget()
self.inLoansReq.setObjectName("inLoansReq")
self.gridLayout_4 = QtWidgets.QGridLayout(self.inLoansReq)
self.gridLayout_4.setObjectName("gridLayout_4")
self.tabWidget.addTab(self.inLoansReq, "")
self.outLoans = QtWidgets.QWidget()
self.outLoans.setObjectName("outLoans")
self.gridLayout_5 = QtWidgets.QGridLayout(self.outLoans)
self.gridLayout_5.setObjectName("gridLayout_5")
self.tabWidget.addTab(self.outLoans, "")
self.outLoansReq = QtWidgets.QWidget()
self.outLoansReq.setObjectName("outLoansReq")
self.gridLayout_6 = QtWidgets.QGridLayout(self.outLoansReq)
self.gridLayout_6.setObjectName("gridLayout_6")
self.tabWidget.addTab(self.outLoansReq, "")
self.outGifts = QtWidgets.QWidget()
self.outGifts.setObjectName("outGifts")
self.gridLayout_7 = QtWidgets.QGridLayout(self.outGifts)
self.gridLayout_7.setObjectName("gridLayout_7")
self.tabWidget.addTab(self.outGifts, "")
self.Inst = QtWidgets.QWidget()
self.Inst.setObjectName("Inst")
self.gridLayout_8 = QtWidgets.QGridLayout(self.Inst)
self.gridLayout_8.setObjectName("gridLayout_8")
self.tabWidget.addTab(self.Inst, "")
self.gridLayout.addWidget(self.tabWidget, 0, 0, 1, 1)
MainWindow.setCentralWidget(self.centralwidget)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
self.tabWidget.setCurrentIndex(0)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "Herbarium Assistant"))
self.save.setText(_translate("MainWindow", "Save"))
self.exit.setText(_translate("MainWindow", "Exit"))
self.openFile.setText(_translate("MainWindow", "open file"))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.inLons), _translate("MainWindow", "IN-LOANS"))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.inGifts), _translate("MainWindow", "IN-GIFTS"))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.inLoansReq), _translate("MainWindow", "IN-LOANS REQ."))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.outLoans), _translate("MainWindow", "OUT-LOANS"))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.outLoansReq), _translate("MainWindow", "OUT-LOANS REQ."))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.outGifts), _translate("MainWindow", "OUT-GIFTS"))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.Inst), _translate("MainWindow", "INST"))
import os,sys,csv,datetime
from Email import Ui_Email
from GUI2 import Ui_MainWindow
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.Qt import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
class mainForm(QMainWindow,Ui_MainWindow):
def __init__(self, *args, **kwargs):
QMainWindow.__init__(self, *args, **kwargs)
self.setupUi(self)
self.initUI()
def initUI(self):
self.openFile.clicked.connect(self.singleBrowse)
def singleBrowse(self): # This is the function to open a CSV file and browse it
self.filePath = QFileDialog.getOpenFileName(self,'Single File',"~/Desktop/CSV file",'*.csv')
if self.filePath[0] != '':
with open(self.filePath[0],"r") as data:
reader = csv.reader(data, delimiter=',')
self.tem = list(reader)
formatInput = self.formatInput(self.filePath[0])
if "in-loans.csv" in formatInput:
self.singleBrowseCore(self.inLoanTable)
def formatInput(self,textLine):
textLine = textLine.lower().strip()
wordList = textLine.split()
textLine = " ".join(wordList)
return textLine
def singleBrowseCore(self,file:QTableWidget):
file.setRowCount(0)
file.setColumnCount(len(self.tem[0]))
colHeaders = self.tem[0]
file.setHorizontalHeaderLabels(colHeaders)
for rowData in self.tem[1:]: # populating data from local CSV file
row = file.rowCount()
file.insertRow(row)
for column, stuff in enumerate(rowData):
item = QTableWidgetItem(stuff)
file.setItem(row,column,item)
header = file.horizontalHeader()
file.horizontalHeader().setStretchLastSection(True)
file.horizontalHeader().setSectionResizeMode(0, QHeaderView.Stretch)
for i in range(len(self.tem[0])):
header.setSectionResizeMode(int(i),QtWidgets.QHeaderView.ResizeToContents)
file.resizeRowsToContents()