<p>以下是一个清理后的工作版本:</p>
<pre><code>class Temp(QPushButton):
def __init__(self, x, y, w, h, parent=None):
super(Temp, self).__init__(parent)
self.w = w
self.h = h
self.x = x
self.y = y
self.text = "test"
def paintEvent(self, e):
qp = QPainter(self)
qp.setPen(Qt.red)
qp.drawEllipse(0, 0, self.w - 2, self.h - 2)
class Example(QWidget):
def __init__(self):
super(Example, self).__init__()
self.initUI()
def initUI(self):
self.setGeometry(300, 300, 350, 100)
self.setWindowTitle('Points')
self.drawP()
def drawP(self):
theta = 2 * np.pi / 15
for i in range(15):
angle = theta * (i + 1)
dx = int(round(400 + 300 * np.cos(angle)))
dy = int(round(300 + 300 * np.sin(angle)))
t = Temp(dx, dy, 10, 10, parent=self)
t.setGeometry(dx, dy, 10, 10)
app = QApplication(sys.argv)
ex = Example()
self.show()
sys.exit(app.exec_())
</code></pre>
<p>一些提示:</p>
<ul>
<li>您需要调用<code>.show()</code>在父项之后添加的每个按钮<code>.show()</code></li>
<li>需要在父控件内部设置几何体</li>
<li>最好不要在paint函数中创建任何小部件,将其放入<code>__init__</code>或您的<code>initUI</code></li>
<li>对于您正在尝试的操作,qgraphicscene/View可能更合适</li>
</ul>