<p>通常有两种方法可以持久化此数据,要跨会话持久化数据,可以使用<code>QSettings</code>并在<code>__init__</code>中加载数据,并将其保存在<code>closeEvent</code>方法中</p>
<p>一般看起来像这样。这还假设您使用的是<code>v2</code>版本的<code>QVariant</code>api;否则,<code>QSettings.value</code>返回的结果将是<code>QVariant</code>,您需要将其转换为适当的python类型。如果您使用的是<code>PyQt</code>的最新版本,那么您应该在<code>v2</code>,<a href="https://stackoverflow.com/a/6238226/1547004">but if not you can force it</a>上粘贴这个文件</p>
<pre><code>import sip
sip.setapi('QVariant', 2)
sip.setapi('QString', 2)
class MyDialog(QDialog):
def __init__(self, parent):
super(MyDialog, self).__init__(parent)
self.myvalue = 10
self.restoreSettings()
def closeEvent(self, event):
self.saveSettings()
super(MyDialog, self).closeEvent(event)
def saveSettings(self):
settings = QSettings('myorg', 'myapp')
settings.setValue('myvalue', self.myvalue)
def restoreSettings(self):
settings = QSettings('myorg', 'myapp')
self.myvalue = settings.value('myvalue', self.myvalue)
</code></pre>
<p>编辑:</p>
<p>代码中的错误是由以下原因引起的:</p>
^{pr2}$
<p>您不应该直接调用或连接到<code>closeEvent</code>。相反,您应该连接到<code>.close</code>或{<cd12>}</p>
<pre><code>self.buttonBox.button(QDialogButtonBox.Ok).clicked.connect(self.accept)
</code></pre>