加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – PyQT窗口:我想记住它关闭的位置

发布时间:2020-12-20 12:28:39 所属栏目:Python 来源:网络整理
导读:我有一个QDialog,当用户关闭QDialog,并在以后重新打开它时,我想记住位置并在完全相同的位置打开窗口.我怎么会记得那个位置? 解决方法 为此,您可以使用 saveState() , saveGeometry() resize()和move()方法,以及其他答案提到的 closeEvent()和 QSettings.这
我有一个QDialog,当用户关闭QDialog,并在以后重新打开它时,我想记住位置并在完全相同的位置打开窗口.我怎么会记得那个位置?

解决方法

为此,您可以使用 saveState(),saveGeometry() resize()和move()方法,以及其他答案提到的 closeEvent()和 QSettings.这是一个例子,以获得这个想法:

class MyWindow(QMainWindow):
    def __init__(self,parent):
        QMainWindow.__init__(self,parent)
        self.settings = QSettings("MyCompany","MyApp")
        self.restoreGeometry(self.settings.value("geometry",""))
        self.restoreState(self.settings.value("windowState",""))

    def closeEvent(self,event):
        self.settings.setValue("geometry",self.saveGeometry())
        self.settings.setValue("windowState",self.saveState())
        QMainWindow.closeEvent(self,event)

编辑:

更新了使用PyQt API v2的答案.如果使用API?? v1,则必须手动将settings.value()的结果转换为ByteArray

self.restoreState(self.settings.value("windowState").toByteArray())

我还使用了窗口自己的size()和pos(),因为我已经从.ui文件加载了窗口.如果从头开始编码窗口,您可以在这些行之前将其设置为默认值.对于状态,我默认为一个空字符串,该函数愉快地接受为空ByteArray并且在第一次运行时不执行任何操作.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读