我在我的 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)
.
最佳答案
我为你所有的麻烦感到抱歉。该错误位于 self.setWindowFlags(QtCore.Qt.Tool)
行中。我不知道为什么这会破坏它,但我评论了它(将删除它)并且它得到了修复。但是,这样做后,标签将无法正确调整大小,并且总是太小。我想这是另一个问题。
关于Python 脚本不能在 Ubuntu 上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69452624/