2

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()
4

1 に答える 1