在表单上移动qbutton

时间:2017-10-06 21:27:45

标签: python python-3.x pyqt qpushbutton

我从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)

1 个答案:

答案 0 :(得分:1)

当您将小部件添加到布局时,它负责管理位置策略,在您将它们添加到QVBoxLayout的情况下,它们将垂直分布:

enter image description here

如果你想添加它并且你可以自由地移动它而不使用布局,你必须作为父级传递给你要放置它的小部件,因为它将被放置在上角但现在如果你能使用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")

enter image description here