python - PyQt5:使用不透明的小部件创建透明窗口
解决方案
正如@Felipe 提到的,您可以使用 window.setAttribute(QtCore.Qt.WA_TranslucentBackground) 这是一个小例子:
import sys
from PyQt5 import QtWidgets, QtCore
app = QtWidgets.QApplication(sys.argv)
# create invisble widget
window = QtWidgets.QWidget()
window.setAttribute(QtCore.Qt.WA_TranslucentBackground)
window.setWindowFlags(QtCore.Qt.FramelessWindowHint)
window.setFixedSize(800, 600)
# add visible child widget, when this widget is transparent it will also be invisible
visible_child = QtWidgets.QWidget(window)
visible_child.setStyleSheet('QWidget{background-color: white}')
visible_child.setObjectName('vc')
visible_child.setFixedSize(800, 600)
layout = QtWidgets.QGridLayout()
# add a close button
close_button = QtWidgets.QPushButton()
close_button.setText('close window')
close_button.clicked.connect(lambda: app.exit(0))
layout.addWidget(close_button)
# add a button that makes the visible child widget transparent
change_size_button = QtWidgets.QPushButton()
change_size_button.setText('change size')
change_size_button.clicked.connect(lambda: visible_child.setStyleSheet('QWidget#vc{background-color: transparent}'))
layout.addWidget(change_size_button)
visible_child.setLayout(layout)
window.show()
app.exec()
推荐阅读
- apache-spark - 是否可以通过纱线 cli 使用应用程序名称获取纱线应用程序 ID
- swift - 消息大小较大时 appendMessageOperation 失败?
- dialogflow-es - 如何在活动聊天中使用对话流中的变量?有效载荷?
- python - 不明白为什么尝试调用继承的方法时会出现此 TypeError
- cluster-analysis - recall and precision for multi class clustering
- arrays - Angular 6:更改 localStorage 中的数组项
- sql - 我需要从表的多个列中获取 Null 值的总数
- command-line - /usr/bin/env: 'python3\r': Windows 中没有抛出这样的文件或目录错误
- python - Python slackclient“操作超时”错误
- json - Prometheus API 返回 HTML 而不是 JSON