PyQt5获取当前窗口状态(是否最大化)

2024-03-28 20:41:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图创建一个配置文件,其中包含有关窗口大小、位置和关闭时状态的信息。再次打开时,应根据该信息进行恢复。 所以我用closeEvent来触发这个函数:

cfg = ConfigParser()            # create config object   
def saveConfig(gui):
    winW = gui.centralwidget.frameGeometry().width()        # width of window
    winH = gui.centralwidget.frameGeometry().height()       # height of window
    
    cfg['window'] = {}                                      # window settings
    window = cfg['window']
    window['size'] = f"{winW},{winH}"                       # save current window size
    window['pos'] = f"{gui.x()},{gui.y()}"                  # save current window position
    
    with open(CONFIG_PATH, 'w') as file:                    # write config to file
         cfg.write(file)

以下是loadConfig函数:

def loadConfig(gui):
    cfg.read(CONFIG_PATH)       # read config from CONFIG_PATH

    if 'window' in cfg:         # window settings
        window = cfg['window']    
        size = window.get('size').split(',')
        pos = window.get('pos').split(',')
        gui.resize(int(size[0]), int(size[1]))  # resize window to saved size
        gui.move(int(pos[0]), int(pos[1]))      # move window to save position
    else:
        gui.resize(1110,783)
        gui.move(398,94)

但是,如果窗口在最大化时关闭,则在启动后不会再次显示最大化。只是在相同的大小和位置

我读到你可以得到windowState()。如果它是Qt.WindowMaximized,那么比较起来就很容易了,但是当我使用print(gui.centralwidget.windowState()时,它返回<PyQt5.QtCore.Qt.WindowStates object at 0x000001E7B1DBF970>。 有什么想法吗


Tags: topathposconfigsizemovesavegui
1条回答
网友
1楼 · 发布于 2024-03-28 20:41:29

所有Qt枚举和标志都是整数值或位值,因此它们可以轻松转换为“可读”格式:

    state = int(self.windowState())

即使不知道数值,也可以使用位运算符直接比较标志:

    isMaximized = self.windowState() & QtCore.Qt.WindowMaximized

注意,如果您想知道特定的状态:^{}^{}^{},您可以调用相关的便利函数

最后,请记住,Qt已经提供了^{}^{},这不仅存储窗口的几何图形,而且还存储窗口小部件当前所在的屏幕编号和几何图形,这确保窗口将尽可能恢复到保存状态时的状态,同时确保它始终可见,即使屏幕设置已更改

相关问题 更多 >