Skip to content
Related Articles

Related Articles

Improve Article

Python – Grid container in GTK+ 3

  • Last Updated : 03 Jun, 2020

Gtk.Grid is a container which arranges its child widgets in rows and columns, without the specification of the dimensions in the constructor. Children are added using Gtk.Grid.attach(). They can span multiple rows or columns.

The Gtk.Grid.attach() method takes five parameters:

child: the Gtk.Widget to add.

left: the column number to attach the left side of child to.

top: indicates the row number to attach the top side of child to.

width: indicates the number of columns that the child will span.

height: indicates the number of rows that the child will span.

Adding a child next to existing child is also possible using Gtk.Grid.attach_next_to().

The Gtk.Grid.attach_next_to method takes five parameters:

child:Gtk.Widget to add.

sibling: an existing child widget of a Gtk.Grid or None. The child widget will be placed next to sibling.

side: Gtk.PositionType indicating the side of sibling.

width: indicate the number of columns the child widget will span.

height: indicate the number of rows the child widget will span

Follow below steps:

  1. import GTK+ 3 module.
  2. Create main window.
  3. Create button.
  4. Create grid.

Note: In IDE’s like Pycharm we can install a package named PyGObject in order to use GTK+ 3.

Example :

import gi
# Since a system can have multiple versions
# of GTK + installed, we want to make 
# sure that we are importing GTK + 3.
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk
class GridWin(Gtk.Window):
    def __init__(self):
        Gtk.Window.__init__(self, title ="GfG")
        grid = Gtk.Grid()
        button1 = Gtk.Button(label ="Button 1")
        button2 = Gtk.Button(label ="Button 2")
        button3 = Gtk.Button(label ="Button 3")
        button4 = Gtk.Button(label ="Button 4")
        button5 = Gtk.Button(label ="Button 5")
        button6 = Gtk.Button(label ="Button 6")
        # With in parentheses child, left, top, width,
        # height respectively
        grid.attach(button2, 1, 0, 2, 1)
        # With in parentheses child, sibling, left, top, width,
        # height respectively 
        grid.attach_next_to(button3, button1, Gtk.PositionType.BOTTOM, 1, 2)
        grid.attach_next_to(button4, button3, Gtk.PositionType.RIGHT, 1, 1)
        grid.attach(button5, 1, 2, 1, 1)
        grid.attach_next_to(button6, button4, Gtk.PositionType.RIGHT, 1, 2)
win = GridWin()
win.connect("destroy", Gtk.main_quit)

Output :

 Attention geek! Strengthen your foundations with the Python Programming Foundation Course and learn the basics.  

To begin with, your interview preparations Enhance your Data Structures concepts with the Python DS Course. And to begin with your Machine Learning Journey, join the Machine Learning – Basic Level Course

My Personal Notes arrow_drop_up
Recommended Articles
Page :