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