我目前正在 PySide 中编写一个应用程序,我希望它在退出时保存窗口尺寸。该geometry()
方法返回类似PySide.QtCore.QRect(300, 300, 550, 150)
但我想要的只是(300, 300, 550, 150)
. 我可以找到一种解析它的方法,但我想要一种更简洁的方法。有什么建议么?
问问题
659 次
3 回答
5
getRect方法返回值的元组:
>>> widget.geometry().getRect()
(0, 0, 640, 480)
于 2012-03-05T02:47:31.943 回答
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)
您还可以将 a 二进制序列化或反序列化为QRect
一个QDataStream
16 字节数组,表示 4 个 32 位整数。
于 2012-03-05T01:47:42.007 回答
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)
瞧!
于 2015-08-04T21:17:04.523 回答