将几何()的内容作为PySide中的列表返回

时间:2012-03-04 20:32:35

标签: python-3.x pyside qrect

我目前正在PySide中编写应用程序,我希望它在退出时保存窗口尺寸。 geometry()方法返回PySide.QtCore.QRect(300, 300, 550, 150)之类的内容,但我想要的只是(300, 300, 550, 150)。我可以找到解析它的方法,但我想要一个更干净的方法。有什么建议吗?

3 个答案:

答案 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)

瞧!