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并且在第一次运行时不执行任何操作. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |