Python Forum
Python minesweeper game gtk3 get label value after click
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Python minesweeper game gtk3 get label value after click
I write simple minesweeper game in Python 2.7 with Gtk3. I have a problem with show value of label after click using

First case I use 
after click and this works good, label value are shows up. 

M - is a mine on board

But I don't want to use
. I want to block button after click with
 property. I try do this in my
return self.button.set_sensitive(False)
 but after that I don't get any value of my buttons. I clicked all board and all buttons are disable. Why I don't get any value of label? 

My code:

    import gi
    from random import randrange
    gi.require_version('Gtk', '3.0')
    from gi.repository import Gtk, Gdk
    class SaperButton(Gtk.Button):
        def __init__(self):
            self.set_size_request(50, 50)
    class Cell:
        def __init__(self):
            self.mine = False
            self.neighbormines = 0
            self.button = SaperButton()
        def place_mine(self):
            self.mine = True
        def is_mine(self):
            return self.mine
        def discover(self):
            print 'discover'
            # with hide showing values of label
            # with return self.button.set_sensitive(False) don't show
            return self.button.hide()
        def is_discovered(self):
            return not self.button.get_visible()
        def set_nighbromines(self, number):
            self.neighbormines = number
        def get_nighbromines(self):
            return self.neighbormines
        def get_button(self):
            return self.button
    class SaperGrid(Gtk.Grid):
        def __init__(self, rows, cols, ratio):
            self.rows = rows
            self.cols = cols
            self.cells = []
            self.ratio = ratio
            for row in range(rows):
                for col in range(cols):
                    cell = Cell()
                    self.attach(cell.get_button(), row, col, 1, 1)
        def get_cells(self):
            return self.cells
        def get_row_col_button(self, index):
            return (index / self.cols, index % self.cols)
        def place_mines(self):
            mines = 0
            while mines < (self.rows * self.cols * self.ratio):
                row = randrange(0, self.rows)
                col = randrange(0, self.cols)
                i = self.get_index(row, col)
                if not self.cells[i].is_mine():
                    mines += 1
                    button = Gtk.Button()
                    label = Gtk.Label("M")
                    self.attach(button, row, col, 1, 1)
            for i, val in enumerate(self.cells):
                print self.cells[i]
        def get_index(self, row, col):
            return (row * self.cols) + col
        def discover_cell(self, row, col):
            index = self.get_index(row, col)
            print 'index', index
        def discover_all_cells(self):
            for cell in self.cells:
    class Saper:
        def __init__(self, rows, cols):
            self.window = Gtk.Window()
            self.rows = rows
            self.cols = cols
            self.vbox = Gtk.VBox()
            self.create_grid(rows, cols)
        def create_grid(self, rows, cols):
            self.grid = SaperGrid(rows, cols, 0.10)
            for i, cell in enumerate(self.grid.get_cells()):
                (row, col) = self.grid.get_row_col_button(i)
                print 'Button connect in col {} row {}'.format(col, row)
                cell.get_button().connect('clicked', self.clicked_handler, row, col)
            self.vbox.pack_start(self.grid, expand=True, fill=True, padding=0)
        def clicked_handler(self, button, row, col):
            cell_index = self.grid.get_index(row, col)
            self.grid.discover_cell(row, col)
        def exit(self, widget, data=None):
    win = Saper(5, 5)
What's is wrong?

Possibly Related Threads…
Thread Author Replies Views Last Post
  Adding the timer, smiley face, and flags in Minesweeper. javesike1262 5 460 May-04-2021, 10:20 PM
Last Post: deanhystad
  [GI] Error when I close the interface Glade/GTK3/ Charles25 2 739 Jun-16-2020, 07:02 PM
Last Post: Charles25
  [Tkinter] Python 3 change label text gw1500se 6 1,656 May-08-2020, 05:47 PM
Last Post: deanhystad
  [PyQt] Python PyQt5 - Change label text dynamically based on user Input ppel123 1 5,888 Mar-20-2020, 07:21 AM
Last Post: deanhystad
  Make Label Text background (default color) transparent using tkinter in python barry76 1 13,530 Nov-28-2019, 10:19 AM
Last Post: Larz60+
  Problem with Gtk3 and GLArea gsohler 0 1,003 Aug-12-2019, 07:33 AM
Last Post: gsohler
  Help - GTK3 + Pango: Printing data as table format scandido 0 1,913 Jan-26-2018, 06:03 PM
Last Post: scandido
  python3 + gtk3 image sequence changos 0 2,100 Apr-24-2017, 04:10 PM
Last Post: changos

Forum Jump:

User Panel Messages

Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020