首页 > 解决方案 > Python PytQT5 - Windows 按钮移动到其他区域

问题描述

我正在寻求帮助,我正在使用 PyQT5 及其包含的 Web 引擎开发一个 Web 浏览器,但是,我遇到了一个问题,我似乎没有找到解决方法。基本上,我正在尝试将 Windows 按钮 - 最小化、更改窗口大小和关闭按钮移动到工具栏区域,就像 Google Chrome 一样。解释:

右侧的 Windows 按钮 - 在 Windows 框架上

现在,我删除了窗框,这 3 个按钮消失了(应该如此):

无窗框

现在基本上这就是我想要的,没有框架,但窗口按钮会移动到 Tab/TabBar 或 ToolBar。就像谷歌浏览器一样:

谷歌浏览器示例

我使用以下代码禁用窗口框架:

def __init__(self, parent=None, *args, **kwargs):
    super(MainWindow, self).__init__(parent, Qt.FramelessWindowHint, *args, **kwargs)

但现在我不知道如何将这三个按钮移动到标签栏或工具栏。我发现我可以使用“标志”,特别是这三个:

Qt.WindowMinimizeButtonHint
Qt.WindowCloseButtonHint
Qt.WindowMaximizeButtonHint

现在我使用以下代码创建我的 Tab 小部件:

    self.tabs = QTabWidget()
    self.tabs.setDocumentMode(True)
    self.tabs.tabBarDoubleClicked.connect(self.tab_open_doubleclick)
    self.tabs.currentChanged.connect(self.current_tab_changed)
    self.tabs.setTabsClosable(True)
    self.tabs.tabCloseRequested.connect(self.close_current_tab)

    self.setCentralWidget(self.tabs)

之后,我创建状态栏和导航栏:

    self.status = QStatusBar()
    self.setStatusBar(self.status)

    navigation_bar = QToolBar('Navigation')
    navigation_bar.setIconSize(QSize(24, 24))
    self.addToolBar(navigation_bar)

之后,我将按钮添加到工具栏 - 停止、重新加载、后退和前进等。

标签: pythonpython-3.xpyqtpyqt5qmainwindow

解决方案


自己找到了答案,这有点不是我想要的东西,但它会做。

我禁用了带有标志的框架 - 然后禁用了我之前发布的 3 个标志。然后我在工具栏上创建了 3 个新按钮并将它们的图标更改为 windows 按钮,最后一步是添加回这 3 个按钮的功能,我用 2 个功能完成了这项工作。


解决了。


推荐阅读