每当我的应用程序重新启动时,打开的对话框始终指向工具位置。
如果它指向用于加载文件的最后位置,那将会更有用。
我尝试设置环境变量,但它仍会打开包含当前dir路径的对话框
码
def openFile():
last_path = os.environ.get('LAST_PATH') # if 'LAST_PATH' doesn't exist return None
path, _ = QFileDialog.getOpenFileName(self, "Open text file", dir=last_path)
os.environ["LAST_PATH"] = os.path.dirname(path) # save path from where file is opened in QFileDialog to 'LAST_PATH'
*other code*
以上代码无法正常工作。为什么? 是否存在通过python脚本设置的环境变量,直到该应用程序未关闭?
答案 0 :(得分:1)
尝试将路径保存到文件中,该文件位于脚本目录中。
def openFile():
with open("directory_file.txt","rU") as openfile:
last_path = openfile.read()
path, _ = QFileDialog.getOpenFileName(self, "Open text file", dir=last_path)
with open("directory_file.txt","w") as openfile:
openfile.write(str(path)) # Common use to maek str(), because QFiledialog returns a Qstring
<DoYourProcessing>
要使用此功能,您必须在源代码的目录中创建“directory_file.txt”文件。您可以使用记事本(++)编辑器手动执行此操作,也可以使用以下代码执行此操作:
def write_file(directory,string_to_write):
with open(str(directory),"w") as openfile:
openfile.write(string_to_write)
您之前没有初始化环境变量也可能是您的代码无效的原因。 此外,对于像这样的微小事情使用环境变量是相当不方便的。
答案 1 :(得分:1)
我建议你看看QSettings http://srinikom.github.io/pyside-docs/PySide/QtCore/QSettings.html。 我可以举例说明如何在pyqt中使用QSettings,我从不尝试pySide,但我认为它非常相似。
首先,您需要在启动应用程序时阅读QSettings。所以创建一个QSetting 对象然后读取名为&#34; last_file&#34;的参数。在您的计划的第一次运行, 此变量不存在,因此它将返回&#34;。&#34;这是工具目录
settings = QSettings()
last_file_opened = settings.value("last_file", ".").toString()
选择文件时,必须添加此代码。
settings = QSettings()
settings.setValue("last_file", QVariant(QString('file_name')))
在创建QApplication时设置此参数也很重要。这会在内存中创建一个空间,用于保存设置
app = QApplication(argv)
app.setOrganizationName("yourOrg")
app.setOrganizationDomain("yourOrgDomain")
app.setApplicationName("yourApplicationName")
我希望它有所帮助
答案 2 :(得分:0)
Pyside的Qsettings格式
def openFile():
settings = QSettings("Company name", "Application name")
last_path = settings.value("LAST_PATH", ".")
path, _ = QFileDialog.getOpenFileName(self, "Open text file", dir=last_path)
self.settings.setValue("LAST_PATH", os.path.dirname(path))