<p>您可以使用<code>QPainter.drawRoundedRect</code>自己绘制小部件的区域:</p>
<pre><code>from PyQt4.QtGui import *
from PyQt4.QtCore import *
import sys
class MyRoundWidget(QWidget):
def __init__(self, master=None):
super(MyRoundWidget,self).__init__(master)
self.setWindowFlags(Qt.FramelessWindowHint)
self.setWindowTitle("QLinearGradient Vertical Gradient ")
self.setAttribute(Qt.WA_TranslucentBackground)
def paintEvent(self, ev):
painter = QPainter(self)
painter.begin(self)
gradient = QLinearGradient(QRectF(self.rect()).topLeft(),QRectF(self.rect()).bottomLeft())
gradient.setColorAt(0.0, Qt.black)
gradient.setColorAt(0.4, Qt.gray)
gradient.setColorAt(0.7, Qt.black)
painter.setBrush(gradient)
painter.drawRoundedRect(self.rect(), 10.0, 10.0)
painter.end()
def main():
app = QApplication(sys.argv)
widget = MyRoundWidget()
widget.show()
widget.raise_()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
</code></pre>
<p>要使按钮半透明,请执行以下操作:</p>
^{pr2}$
<p>将<code>10</code>更改为<code>0</code>和<code>255</code>之间的值。在</p>
<p>如果您只想要圆形按钮(不是圆形矩形按钮),请将<code>btnPaint.drawRoundedRect(self.rect(), 100.0, 100.0)</code>替换为<code>btnPaint.drawEllipse(10,10,self.width()-10, self.height()-10)</code></p>