我目前正在PySide中编写应用程序,我希望它在退出时保存窗口尺寸。 geometry()
方法返回PySide.QtCore.QRect(300, 300, 550, 150)
之类的内容,但我想要的只是(300, 300, 550, 150)
。我可以找到解析它的方法,但我想要一个更干净的方法。有什么建议吗?
答案 0 :(得分:4)
getRect方法返回值的元组:
>>> widget.geometry().getRect()
(0, 0, 640, 480)
答案 1 :(得分:3)
更简洁的方法是使用QSettings
来存储和检索几何返回到本机应用程序设置存储区的QRect
(Windows注册表,.ini文件,。 plist文件......)。
例如:
settings = QSettings(...);
settings.setValue("lastGeometry", self.geometry())
# and to retrieve the value
lastGeometry = settings.value("lastGeometry")
if lastGeometry.isValid():
self.setGeometry(lastGeometry)
您还可以将带有QRect
的{{1}}二进制序列化或反序列化为代表4个32位整数的16字节数组。
答案 2 :(得分:1)
考虑到OP接受了@alexisdm的那个,这可能很有趣:
我正在考虑使用restoreGeometry()
来处理屏幕窗口外的恢复以及超出顶部边界的窗口。但是:需要一个QByteArray,我只能在我的情况下保存纯Python数据。所以我试着把字节数组变成一个字符串:
encoded = str(self.saveGeometry().toPercentEncoding())
print('encoded: %s' % encoded)
>>> encoded: %01%D9%D0%CB%00%01%00%00%FF%F...
geometry = QtCore.QByteArray().fromPercentEncoding(encoded)
self.restoreGeometry(geometry)
瞧!