试图在PyQt4 GUI中限制每行的QPushbuttons

时间:2017-08-08 14:28:42

标签: python python-2.7 user-interface pyqt pyqt4

我在QHBoxLayout中添加了'n'个按钮。在水平布局中,所有按钮排成一排,一些按钮出屏。但我连续只需要7个按钮。有办法吗?

class test(QtGui.QWidget):
  def __init__(self, parent=None):
      super(test, self).__init__(parent)
      self.test_btn = QtGui.QPushButton()
      self.test_btn.show()
      self.test_btn.clicked.connect(self.btn_fun)
      self.layout = QtGui.QHBoxLayout()
      self.setLayout(self.layout)

  def btn_fun(self):
      for i in range(42): 
         btns = QtGui.QPushButton('btns %d' %i)
         self.layout.addWidget(btns)
if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    ex = test()
    ex.show()
    sys.exit(app.exec_())

1 个答案:

答案 0 :(得分:2)

在这种情况下,QGridLayout更合适。然后,您可以专门指定每个按钮的行和列,以便每行只有一个有限的数字。

class test(QtGui.QWidget):
    def __init__(self, parent=None):
        ...
        self.layout = QtGui.QGridLayout()
        self.setLayout(self.layout)
        self.max_per_row = 7
        self.btn_fun()

    def btn_fun(self):
        for i in range(42):
            col = i % self.max_per_row
            row = i//self.max_per_row
            btns = QtGui.QPushButton('btns %d' % i)
            self.layout.addWidget(btns, row, col)