San*_*mar 4 c++ python qt pyqt
我在 Windows 8.1 64 位上使用 PyQt5 5.5.1(64 位)和 Python 3.4.0(64 位)。
我在恢复我非常简单的 PyQt 应用程序的位置和大小(几何)时遇到问题。
这是最小的工作应用程序:
import sys
from PyQt5.QtWidgets import QApplication, QWidget
class myApp(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
view = myApp()
sys.exit(app.exec())
Run Code Online (Sandbox Code Playgroud)
我在网上读到的是,这是默认行为,我们需要使用 QSettings 来保存和检索 Windows 注册表中的设置,该注册表存储在
\\HKEY_CURRENT_USER\Software\{CompanyName}\{AppName}\
Run Code Online (Sandbox Code Playgroud)
我本可以遵循这些教程,但这些教程/文档是为 C++ 用户编写的。
C++ 不是我的那杯啤酒,转换这些代码对我来说是不可能的。
这个应该可以。
import sys
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5.QtCore import QSettings, QPoint, QSize
class myApp(QWidget):
def __init__(self):
super(myApp, self).__init__()
self.settings = QSettings( 'My company', 'myApp')
# Initial window size/pos last saved. Use default values for first time
self.resize(self.settings.value("size", QSize(270, 225)))
self.move(self.settings.value("pos", QPoint(50, 50)))
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(sys.argv)
frame = myApp()
frame.show()
app.exec_()
Run Code Online (Sandbox Code Playgroud)
我简化了这个例子:QSettings(): How to save to current working directory