我从Qbutton构建了自己的按钮类,并希望在我的表单上安排一批mybuttons。问题是它们只显示在我表单的右下角 - 完全忽略了我的“移动”方法。 (Python 3 + Qt5)谢谢!
Blist = [
["Quit",1250,750],
["LoadAny",1250,850]
]
class lb(QPushButton):
def __init__(self, t, parent=None):
QPushButton.__init__(self, t, parent)
self.setText(t.split("_")[1])
self.setFixedHeight(ButtonH)
self.setFixedWidth(ButtonW)
self.setStyleSheet("background-color:white;")
self.setObjectName(t.split("_")[0])
self.setFont(QFont("Times", 12, QFont.StyleNormal))
class MyWindow(QWidget):
…
buttons = {}
self.layout = QVBoxLayout(self)
for i in range(len(Blist)):
buttons[i] = lb('%d_%s' %(i,Blist[i][0]))
self.layout.addWidget(buttons[i])
buttons[i].move(Blist[i][1],Blist[i][2])
buttons[i].clicked.connect(self.bclick)
答案 0 :(得分:1)
当您将小部件添加到布局时,它负责管理位置策略,在您将它们添加到QVBoxLayout的情况下,它们将垂直分布:
如果你想添加它并且你可以自由地移动它而不使用布局,你必须作为父级传递给你要放置它的小部件,因为它将被放置在上角但现在如果你能使用move()
函数:
Blist = [
["Quit",50,250],
["LoadAny",250,350]
]
ButtonH = 40
ButtonW = 80
class lb(QPushButton):
def __init__(self, t, parent=None):
QPushButton.__init__(self, t, parent)
self.setText(t.split("_")[1])
self.setFixedHeight(ButtonH)
self.setFixedWidth(ButtonW)
self.setStyleSheet("background-color:white;")
self.setObjectName(t.split("_")[0])
self.setFont(QFont("Times", 12, QFont.StyleNormal))
class MyWindow(QWidget):
def __init__(self, parent=None):
QWidget.__init__(self, parent)
buttons = {}
#self.layout = QVBoxLayout(self)
for i in range(len(Blist)):
buttons[i] = lb('%d_%s' %(i,Blist[i][0]), self)
#self.layout.addWidget(buttons[i])
buttons[i].move(Blist[i][1],Blist[i][2])
buttons[i].clicked.connect(self.bclick)
def bclick(self):
print("click")