python - pyqt:具有透明背景的小部件

标签 python pyqt background widget transparent

我想在 pyqt 中绘制一个透明背景矩形。以下代码满足我在 Mac 中的需求:

import sys
from PyQt4 import QtGui, QtCore, Qt

class ZoomWidget(QtGui.QWidget):
    def __init__(self):  
        QtGui.QWidget.__init__(self)
        #self.setAttribute(Qt.Qt.WA_NoSystemBackground)
        self.setWindowFlags(QtCore.Qt.FramelessWindowHint)
        self.setAttribute(QtCore.Qt.WA_TranslucentBackground)
        self.setStyleSheet("background-color:transparent;")
        self.setGeometry(100,100,100,100)
        self.show()        

    def paintEvent(self, e=None): 
        qp = QtGui.QPainter()
        qp.begin(self)
        qp.setPen( QtGui.QPen(QtCore.Qt.gray,3,QtCore.Qt.DashDotLine ) )
        qp.drawRect(0,0,self.rect().width()-1, self.rect().height()-1)  
        qp.end()

if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    ex = ZoomWidget()
    sys.exit(app.exec_())

但是,当我在 Linux 中使用此代码时,它给了我一个黑色背景矩形。我该怎么做才能给它透明背景?谢谢。

最佳答案

您是否尝试设置 ZoomWidget 的父级?

...
def __init__(self, *args, **kwargs):
    QtGui.QWidget.__init__(self, *args, **kwargs)
...
app = QtGui.QApplication(sys.argv)
dial = QtGui.QDialog()
ex = ZoomWidget(parent=dial)
dial.show()
...

关于python - pyqt:具有透明背景的小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26536832/

相关文章:

css - 拇指上的文字动画

python - 如何防止 Django 管理中的 super 用户被删除?

python - Python 中的重写与虚拟类方法

python - 在其他两个日期之间插入一个日期以获得一个值

python - 前一个 GUI 框架的 'Back' 按钮的 PyQt 适当函数

iOS 应用启动后进入后台

python - Dataframe 按值分组,删除重复项,但保存不相似的条目? Python

python - PyQt 简单 HTTP 服务器 : GUI freezes on starting server

python - PyQt5 使用 keyPressEvent() 触发 paintEvent()

ios - 15 分钟后,后台位置更新在 iOS 中不起作用?