pyqt5 ubuntu上的全屏不需要的行为

发布于 2025-02-05 16:39:01 字数 2227 浏览 3 评论 0原文

我正在Ubuntu上运行PYQT5应用程序,当应用程序处于全屏模式时,当单击对话框时,我会在应用程序上弹出码头和标题栏的这种行为。当对话框关闭时,一切都会恢复正常。这个问题不会在我的英特尔上发生,而是在ARM64上发生。我的系统是Jetson Agx Xavier 32GB。我在下面发布了一个示例代码,该代码重现了问题。

我看到了另一篇建议在设置窗口标志qt.x11bypasswindowmanagerhint或qt.bypasswindowmanagerhint时提出的一篇文章,尽管它涉及一些问题,但这也没有起作用。

任何帮助都将被大大应用。

from PyQt5.QtWidgets import QComboBox, QVBoxLayout, QWidget, QHBoxLayout, QApplication, QFileDialog, QPushButton, QMainWindow
from PyQt5.QtCore import Qt
import sys
import pyautogui


class TestCode(QMainWindow):

    def __init__(self):
        super(TestCode, self).__init__()

        self.OpenDialog = QPushButton()
        self.OpenDialog.setText("OPEN D BOX")
        self.OpenDialog.clicked.connect(self.openDBox)

        self.closeWindow = QPushButton()
        self.closeWindow.setText("CLOSE")
        self.closeWindow.clicked.connect(self.close)

        colors = ["Yellow", "Magenta", "Black", "White",
                       "Green", "Blue", "Cyan", "Red"]
        self.drop_down = QComboBox()
        for color in colors:
            self.drop_down.addItem(color)

        self.buttonLayout = QVBoxLayout()
        self.buttonLayout.addWidget(self.OpenDialog)
        self.buttonLayout.addWidget(self.drop_down)
        self.buttonLayout.addWidget(self.closeWindow)

        self.mainWidget = QWidget()
        self.mainLayout = QHBoxLayout(self.mainWidget)
        self.freeSpace = QWidget()
        self.freeSpace.setStyleSheet("background-color: black")

        self.mainLayout.setSpacing(10)
        self.mainLayout.setContentsMargins(20, 20, 20, 20)
        self.mainLayout.addLayout(self.buttonLayout)
        self.mainLayout.addWidget(self.freeSpace, 1)

        self.setCentralWidget(self.mainWidget)

        self.showFullScreen()
        # screenWidth, screenHeight = pyautogui.size()
        # self.setGeometry(0,0,screenWidth+1, screenHeight)

    def openDBox(self):

        openImageFile, _ = QFileDialog.getOpenFileName()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    main_window = TestCode()
    # main_window.setWindowFlags(Qt.WindowStaysOnTopHint | Qt.FramelessWindowHint | Qt.BypassWindowManagerHint)

    main_window.show()
    sys.exit(app.exec_())

I'm running a pyqt5 application on an ubuntu and when the app is in full screen mode, I get this behavior of the dock and title bar popping over the application when a dialog box is clicked. When the dialog box is closed, everything goes back to normal. This issue doesn't happen on my intel but happens on ARM64. My system is the Jetson AGX Xavier 32GB. I've posted a sample code below that reproduces the issue.

I saw another post that suggested in setting the window flag Qt.X11BypassWindowManagerHint or Qt.BypassWindowManagerHint, even though it came with some issues but that didn't work either.

Any help would be greatly appriciated.

from PyQt5.QtWidgets import QComboBox, QVBoxLayout, QWidget, QHBoxLayout, QApplication, QFileDialog, QPushButton, QMainWindow
from PyQt5.QtCore import Qt
import sys
import pyautogui


class TestCode(QMainWindow):

    def __init__(self):
        super(TestCode, self).__init__()

        self.OpenDialog = QPushButton()
        self.OpenDialog.setText("OPEN D BOX")
        self.OpenDialog.clicked.connect(self.openDBox)

        self.closeWindow = QPushButton()
        self.closeWindow.setText("CLOSE")
        self.closeWindow.clicked.connect(self.close)

        colors = ["Yellow", "Magenta", "Black", "White",
                       "Green", "Blue", "Cyan", "Red"]
        self.drop_down = QComboBox()
        for color in colors:
            self.drop_down.addItem(color)

        self.buttonLayout = QVBoxLayout()
        self.buttonLayout.addWidget(self.OpenDialog)
        self.buttonLayout.addWidget(self.drop_down)
        self.buttonLayout.addWidget(self.closeWindow)

        self.mainWidget = QWidget()
        self.mainLayout = QHBoxLayout(self.mainWidget)
        self.freeSpace = QWidget()
        self.freeSpace.setStyleSheet("background-color: black")

        self.mainLayout.setSpacing(10)
        self.mainLayout.setContentsMargins(20, 20, 20, 20)
        self.mainLayout.addLayout(self.buttonLayout)
        self.mainLayout.addWidget(self.freeSpace, 1)

        self.setCentralWidget(self.mainWidget)

        self.showFullScreen()
        # screenWidth, screenHeight = pyautogui.size()
        # self.setGeometry(0,0,screenWidth+1, screenHeight)

    def openDBox(self):

        openImageFile, _ = QFileDialog.getOpenFileName()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    main_window = TestCode()
    # main_window.setWindowFlags(Qt.WindowStaysOnTopHint | Qt.FramelessWindowHint | Qt.BypassWindowManagerHint)

    main_window.show()
    sys.exit(app.exec_())

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文