我试着在圆形布局中放置按钮。这是我目前为止写的代码。在
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):
super(self.parent, self).paintEvent(e)
qp = QPainter()
qp.begin(self.viewPort())
self.drawP(qp)
qp.end()
def drawP(self, qp):
qp.setPen(Qt.red)
qp.drawEllipse(self.x, self.y, self.w, self.h)
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.show()
def paintEvent(self, e):
qp = QPainter()
qp.begin(self)
self.drawP(qp)
qp.end()
def drawP(self, qp):
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)))
#qp.drawEllipse(dx, dy, 10, 10)
t = Temp(dx, dy, 10, 10, parent = self)
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
如果在Example类中取消对drawlipse函数的注释,我将得到圆形布局中的椭圆,而不是按钮。在
你混淆了多个问题:
您不应该在paint事件中添加新的小部件。按钮应该添加到构造函数中的示例中。
你应该从qpushbutton开始,让它们工作,然后再切换到自己的类。10x10太小,无法显示按钮!
小部件不应该显示自己。它的用户应该这么做。
按钮没有视口。
添加到已显示的小部件中的小部件将不可见。
从这样开始:
以下是一个清理后的工作版本:
一些提示:
.show()
在父项之后添加的每个按钮.show()
__init__
或您的initUI
相关问题 更多 >
编程相关推荐