为了账号安全,请及时绑定邮箱和手机立即绑定

PyQt5:使用不透明的小部件创建透明窗口

PyQt5:使用不透明的小部件创建透明窗口

慕尼黑的夜晚无繁华 2022-12-06 14:58:22
是否可以使 mainWindow 完全透明而其他小部件保持可见?例如:我想让应用程序透明并使其他所有内容可见(例如,mainFrame、关闭按钮、最小化按钮)
查看完整描述

1 回答

?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

您可以使用 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()


查看完整回答
反对 回复 2022-12-06
  • 1 回答
  • 0 关注
  • 339 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号