2011-11-01 24 views
8

एक ऐप के लिए जिसे एक फ्लैश/कलम/यूएसबी/कूद/अंगूठे ड्राइव से सीधे चलाया जा सकता है, पोर्टेबिलिटी के लिए एक मशीन से दूसरे में जाने में पोर्टेबिलिटी के लिए यह उपयोगकर्ता के लिए समझ में आता है सेटिंग्स को उसी निर्देशिका में मेमोरी स्टिक पर संग्रहीत किया जाना चाहिए जिसे प्रोग्राम चलाया जा रहा है (विंडोज/मैक/लिनक्स उपयोगकर्ता या प्रति मशीन सिस्टम डीआईआर के बजाए)।क्यूसेटिंग(): वर्तमान कार्यशील निर्देशिका में कैसे सहेजें

क्यूसेटिंग() आसान है, हालांकि, वर्तमान कार्यशील निर्देशिका का उपयोग करने के लिए कहा जा सकता है? के बाद से मैं इस समय विंडोज पर चलने की हो

from PySide import QtGui, QtCore 
from PySide.QtGui import QTabWidget, QApplication 
from PySide.QtCore import QSettings 

class AbcApp(QTabWidget): 
    def __init__(self): 
     super(AbcApp, self).__init__() 

     self.settings = QSettings(QSettings.IniFormat,QSettings.SystemScope, '__MyBiz', '__settings') 
     self.settings.setFallbacksEnabled(False) # File only, not registry or or. 

     # setPath() to try to save to current working directory 
     self.settings.setPath(QSettings.IniFormat,QSettings.SystemScope, './__settings.ini') 

     # Initial window size/pos last saved 
     self.resize(self.settings.value("size", QtCore.QSize(270, 225))) 
     self.move(self.settings.value("pos", QtCore.QPoint(50, 50))) 

     self.tab = QtGui.QWidget() 
     self.textEdit = QtGui.QTextEdit(self.tab) 
     self.textEdit.setHtml('<font color=grey>[QTextEdit area]</font><p><center><font color=blue size=4><b>Allo Woyld</b></font></center>') 
     self.addTab(self.tab, 'tab1') 

    def closeEvent(self, e): 
     # Write window size and position to config file 
     self.settings.setValue("size", self.size()) 
     self.settings.setValue("pos", self.pos()) 

     e.accept() 

if __name__ == '__main__': 
    app = QApplication('') 
    frame = AbcApp() 
    frame.show() 
    app.exec_() 

यह .ini फ़ाइल बनाई गई है:

यह एक छोटा सा उदाहरण प्रोग्राम है जो QSettings() का उपयोग कर चलाने के लिए रन से अपनी स्क्रीन की स्थिति रखती है सी : \ दस्तावेज़ और सेटिंग्स \ सभी उपयोगकर्ता \ अनुप्रयोग डेटा__MyBiz__settings.ini

सिस्टमस्कोप के बजाय उपयोगकर्तास्कोप मदद नहीं करता है।
'.''./__settings.ini' के बजाय काम नहीं किया, setPath() मूल रूप से कोई प्रभाव नहीं।

filepath = os.getcwd() + '/__settings.ini' 
self.settings.setPath(QSettings.IniFormat,QSettings.SystemScope, filepath) 

संदर्भ::
भी कोई लाभ नहीं हुआ इस कोशिश की https://doc.qt.io/archives/qt-4.8/qsettings.html http://www.pyside.org/docs/pyside/PySide/QtCore/QSettings.html

वादा हालांकि मैं कैसे PySide के लिए अनुकूल करने के लिए पता नहीं है:
http://www.qtcentre.org/archive/index.php/t-35287.html


अद्यतन: एलेक्सिसडीएम का उत्तर काम करता है, इसलिए यहां अपडेट किया गया कोड अब है:

from PySide import QtGui, QtCore 
from PySide.QtGui import QTabWidget, QApplication 
from PySide.QtCore import QSettings 

class AbcApp(QTabWidget): 
    def __init__(self): 
     super(AbcApp, self).__init__() 

     self.settings = QSettings('settings.ini', QSettings.IniFormat) 
     self.settings.setFallbacksEnabled(False) # File only, no fallback to registry or or. 

     # Initial window size/pos last saved if available 
     self.resize(self.settings.value('size', QtCore.QSize(270, 225))) 
     self.move(self.settings.value('pos', QtCore.QPoint(50, 50))) 

     self.tab = QtGui.QWidget() 
     self.textEdit = QtGui.QTextEdit(self.tab) 
     self.textEdit.setHtml('<font color=grey>[QTextEdit area]</font><p><center><font color=blue size=4><b>Allo Woyld</b></font></center>') 
     self.addTab(self.tab, 'tab1') 

    def closeEvent(self, e): 
     self.settings.setValue('size', self.size()) 
     self.settings.setValue('pos', self.pos()) 
     e.accept() 

if __name__ == '__main__': 
    app = QApplication('') 
    frame = AbcApp() 
    frame.show() 
    app.exec_() 

उत्तर

8

आप इस तरह है कि अधिभार class QSettings(fileName, format[, parent=None]) उपयोग कर सकते हैं:

self.settings = QSettings("__settings.ini", QSettings.IniFormat) 

तो पथ रिश्तेदार है, फ़ाइल पहले से काम कर निर्देशिका में खोला जाएगा, लेकिन यह नहीं हो सकता है कि आप क्या चाहते।
निर्देशिका का उपयोग करने के लिए आप these answers में से किसी एक को आजमा सकते हैं जहां स्क्रिप्ट है।

+0

यह काम करता है, धन्यवाद। – gseattle

संबंधित मुद्दे