Đối với ứng dụng có thể chạy trực tiếp từ ổ flash/pen/usb/jump/thumb, để di chuyển từ máy này sang máy khác, điều này có thể có ý nghĩa đối với người dùng cài đặt được lưu trữ trên thẻ nhớ trong cùng một thư mục mà chương trình đang được chạy từ (thay vì Windows/Mac/Linux người dùng hoặc thư mục hệ thống trên mỗi máy).QSettings(): Cách lưu vào thư mục làm việc hiện tại
QSettings() là tiện dụng, tuy nhiên, nó có thể được cho biết để sử dụng thư mục làm việc hiện tại?
Dưới đây là một chương trình ví dụ nhỏ mà giữ vị trí màn hình của nó từ chạy chạy sử dụng QSettings():
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_()
tập tin .ini này được tạo ra kể từ khi tôi tình cờ được chạy trên Windows tại thời điểm này: C : \ Documents and Settings \ Tất cả người dùng \ Application Data__MyBiz__settings.ini.
UserScope thay vì SystemScope không có tác dụng.
'.'
thay vì './__settings.ini'
không hoạt động, setPath() cơ bản không có hiệu lực.
Cũng cố gắng này không có kết quả:
filepath = os.getcwd() + '/__settings.ini'
self.settings.setPath(QSettings.IniFormat,QSettings.SystemScope, filepath)
tham khảo: https://doc.qt.io/archives/qt-4.8/qsettings.html http://www.pyside.org/docs/pyside/PySide/QtCore/QSettings.html
vọng mặc dù tôi không biết làm thế nào để thích ứng với PySide:
http://www.qtcentre.org/archive/index.php/t-35287.html
Cập nhật: Câu trả lời từ alexisdm hoạt động, vì vậy, đây là mã được cập nhật ngay bây giờ:
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_()
Điều đó có hiệu quả, cảm ơn bạn. – gseattle