Python 如何为绘制的对象(例如绘制线)制作透明背景?

Python 如何为绘制的对象(例如绘制线)制作透明背景?,python,pycharm,pyside,Python,Pycharm,Pyside,我想制作一个应用程序,其中只有绘制的对象(例如绘制线)是可见的,而不是背景 因此,如果用户打开应用程序,他/她可以绘制形状,并且只能看到绘制的形状 我是pyside的新手,但我发现了一些示例,其中只有小部件可见,但我认为这不适用于这个问题 a = QPoint(22, 22) b = QPoint(444, 444) def __init__(self, parent=None): QWidget.__init__(self, parent) self.setGeometry(

我想制作一个应用程序,其中只有绘制的对象(例如绘制线)是可见的,而不是背景

因此,如果用户打开应用程序,他/她可以绘制形状,并且只能看到绘制的形状

我是pyside的新手,但我发现了一些示例,其中只有小部件可见,但我认为这不适用于这个问题

a = QPoint(22, 22)
b = QPoint(444, 444)

def __init__(self, parent=None):
    QWidget.__init__(self, parent)
    self.setGeometry(300, 300, 350, 350)
    self.setWindowTitle('Draw circles')

def paintEvent(self, event):
    paint = QPainter()
    paint.begin(self)
    paint.drawLine(self.a, self.b)
    paint.end()

上面的程序只是在不透明背景上绘制线条的一个示例。不确定如何从这一点转到透明背景。

必须启用标志
Qt::WA_transparcentbackground

从PySide导入QtCore、QtGui
类小部件(QtGui.QWidget):
def uuu init uuu(self,parent=None):
超级(小部件,自我)。\uuuuu初始化\uuuuuuu(父级)
self.setAttribute(QtCore.Qt.WA_半透明背景,True)
def paintEvent(自身,事件):
a=QtCore.QPoint(22,22)
b=QtCore.QPoint(4444444)
painter=QtGui.QPainter(自)
pen=QtGui.QPen(QtGui.QColor(“红色”))
笔设置宽度(5)
画师:画笔
油漆工.抽绳(a,b)
如果名称=“\uuuuu main\uuuuuuuu”:
导入系统
app=QtGui.QApplication(sys.argv)
w=Widget()
w、 调整大小(640480)
w、 show()
sys.exit(app.exec_())

正如上面所说,在windows中似乎有必要添加:

self.setWindowFlags(QtCore.Qt.FramelessWindowHint)

我正在使用PySide 1.2.1okay,正如您指出的,由于PySide已被弃用,建议您使用PySide 2,无论如何,我已经发布了一个答案,请尝试一下。我在PyCharm中运行了此功能,但只显示了一行黑色背景。你知道哪里出了问题吗?这正是我想要的结果!谢谢@SirProgramsLot你的操作系统是什么?我怀疑OP使用的是windows。要在windows上获得一个具有Transparent背景的窗口,您还需要设置windows标志
QtCore.Qt.FramelessWindowHint
。希望我能给你们送点礼物什么的。得到了我想要的确切结果,谢谢!我在windows上,在半透明窗口行下使用self.setWindowFlags(QtCore.Qt.FramelessWindowHint)