首页 > 解决方案 > Python 脚本不能在 Ubuntu 上运行

问题描述

我在我的 Windows PC 上编写了一个 Python 3 脚本,并希望在我的 Ubuntu PC 上也有它。此脚本创建一个启用了 Clickthrough 的 PyQt5 无边框窗口。除了包含单个图像的标签(标记为 GreenRGB.png)之外,该窗口应该是透明的。但是,PyQt5 窗口没有出现。为什么,如果你愿意,我该如何解决这个问题?

我的代码

import sys

from PyQt5 import QtWidgets, QtCore
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPixmap, QIcon
from PyQt5.QtWidgets import *


class Window(QMainWindow):
    def __init__(self):
        super().__init__()

        self.acceptDrops()
        # set the title
        self.setWindowTitle("RGB Corners")

        # creating label
        self.label = QLabel(self)

        # loading image
        self.pixmap = QPixmap('greenRGB.png')

        # adding image to label
        self.label.setPixmap(self.pixmap)

        # Optional, resize label to image size
        self.label.resize(self.pixmap.width(), self.pixmap.height())
        self.label.setAlignment(QtCore.Qt.AlignCenter)
        self.setWindowFlags(QtCore.Qt.Tool)
        self.setAttribute(Qt.WA_TranslucentBackground)
        self.setAttribute(Qt.WA_TransparentForMouseEvents, True)
        self.setAttribute(Qt.WA_NoChildEventsForParent, True)
        self.setWindowFlags(Qt.Window|Qt.X11BypassWindowManagerHint|Qt.WindowStaysOnTopHint|Qt.FramelessWindowHint|QtCore.Qt.Tool)

        # show all the widgets
        self.show()
        self.showMaximized()


App = QApplication(sys.argv)
window = Window()
windows = QtWidgets.QWidget()

trayIcon = QSystemTrayIcon(QIcon('test.png'), parent=App)
trayIcon.setToolTip('RGB Corners')
trayIcon.show()
trayMenu = QMenu()
exitAction = trayMenu.addAction('Exit')
exitAction.triggered.connect(App.quit)
trayIcon.setContextMenu(trayMenu)

sys.exit(App.exec())

PyQt5.12.8 是我安装的版本。经过进一步检查,窗口被创建,并且明显地显示出来。PyCharm 中没有错误,程序不会崩溃。我想 Ubuntu 无法正确绘制这些。我安装的主题没有问题,因为默认Yaru主题有同样的问题。经过进一步检查,导致它不显示的行是这样的:self.setWindowFlags(QtCore.Qt.Tool)

标签: pythonwindowsubuntupyqt5

解决方案


我为你所有的麻烦感到抱歉。错误就在self.setWindowFlags(QtCore.Qt.Tool) 我不知道为什么会破坏它的行中,但我评论了它(将删除它)并且它得到了修复。但是,这样做后,标签将无法正确调整大小,并且总是太小。我想这是另一个问题。


推荐阅读