Skip to content

[PyQt5] 使用 QSettings 儲存參數

Last Updated on 2021-05-19 by Clay

在使用 PyQt5 設計圖形化界面的時候,我們常常會有想要將參數儲存起來的需求。比如說今天我們讓使用者客製化了自己界面的顏色——如果我們沒有將設置顏色的數值儲存起來,那麼下次使用者打開這個程式的時候,還會是原本預設的顏色。

當然,要解決這個問題,最簡單的方法就是將使用者的參數寫在一個檔案中,在使用者調整了他所想要的參數後我們來到這個檔案中並更新參數。這樣做當然也是可以的。

不過我認為,使用 PyQt5 當中提供的 QSettings 也是個相當好的選擇。QSettings 是一個 PyQt5 提供的元件,專門用於儲存參數,可於下次讀取的時候自動載入之前設定的參數。這樣一來,我們就不用額外將參數寫成檔案了。

如果想要了解更多關於 PyQt5 的事情,可以參考他們的 PyPI:https://pypi.org/project/PyQt5/

如果想要觀看一些 PyQt5 的教學,也許可以參考我之前寫的 PyQt5 系列


QSettings 使用方法

QSettings 的使用方法也很簡單:我們只需要在程式開頭初始化這個元件,並且使用 setValue() 設定參數、 value() 給予參數即可。

例如以下這個簡單的 Demo:

# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *


class MainWindow(QWidget):
    def __init__(self):
        super(MainWindow, self).__init__()
        self.resize(200, 100)

        self.settings = QSettings()

        self.label_display = QLabel(self)
        self.label_display.setGeometry(0, 0, 100, 10)

        try: self.label_display.setText(self.settings.value('context'))
        except: self.label_display.setText('TEST')

        self.editLine = QLineEdit(self)
        self.editLine.setGeometry(0, 20, 100, 20)

        self.button = QPushButton(self)
        self.button.clicked.connect(self.buttonEvent)
        self.button.setGeometry(0, 40, 100, 20)
        self.button.setText('Enter')

    def buttonEvent(self):
        self.settings.setValue('context', self.editLine.text())
        self.label_display.setText(self.settings.value('context'))


if __name__ == '__main__':
    app = QApplication([])
    window = MainWindow()
    window.show()
    sys.exit(app.exec_())



Output:

這個我已經輸入過的情況。現在我重新輸入 9999 這樣的數字。

可以看到我已經將 9999 顯示在我的 Label 上了。現在我們關閉程式,重新啟動。

可以看到,9999 還是我們 Label 預設的文字。

Leave a Reply