我们正在尝试使用 Mac OSX Yosemite 半透明效果制作 QMainWindow。我们正在使用 PyQt,但问题是 Qt 问题。到目前为止,我们已经尝试过,它总是完全透明或完全不透明(就像普通窗口一样)。如果我们打开 Qt.WA_TranslucentBackground,窗口背景就会变成 100% 完全透明。
此外,当您滚动时,我们在其上显示的 QGraphicsView 会留下痕迹。鼠标输入也“穿过”透明部分——点击图形视图的透明部分将注册为点击它后面的窗口。使用任何自定义背景颜色设置样式表将无效。如果我们关闭它,窗口仍然是不透明的。然后我们可以使用样式表更改背景颜色,但它'
打开和关闭 WA_FramelessWindowHint 似乎也无法解决任何问题。setAutoFillBackground() 也没有。你知道如何用优胜美地半透明效果制作窗户吗?
这是一个示例 Python 程序来测试它: -
# Attempt at Mac OSX Translucency (example code)
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
Qt = QtCore.Qt
class ExampleMainWindow(QtWidgets.QMainWindow):
def __init__(self, parent=None):
super().__init__(parent)
self.testWidget = QtWidgets.QLabel('Test label, which should be transparent')
# Make sure the testWidget is transparent
self.testWidget.setStyleSheet('background: transparent')
self.testWidget.setAttribute(Qt.WA_TranslucentBackground, True)
self.testWidget.setAutoFillBackground(True)
self.setStyleSheet('background: rgba(255, 255, 255, 0.8)')
self.setAttribute(Qt.WA_TranslucentBackground, True)
self.setAutoFillBackground(True)
#self.setWindowFlags(Qt.FramelessWindowHint) # Doesn't seem to help
self.setCentralWidget(self.testWidget)
def main():
global app, exWindow
app = QtWidgets.QApplication(sys.argv)
exWindow = ExampleMainWindow()
exWindow.show()
exitcodesys = app.exec_()
app.deleteLater()
sys.exit(exitcodesys)
if __name__ == '__main__': main()