8
8
data
9
9
10
10
"""
11
- import pygtk
12
- pygtk . require ( '2 .0' )
13
- import gtk
14
- from gtk import gdk
11
+ import gi
12
+ gi . require_version ( 'Gtk' , '3 .0' )
13
+ gi . require_version ( 'Gdk' , '3.0' )
14
+ from gi . repository import Gtk , Gdk
15
15
16
- import matplotlib
17
- matplotlib .use ('GTKAgg' ) # or 'GTK'
18
- from matplotlib .backends .backend_gtk import FigureCanvasGTK as FigureCanvas
16
+ from matplotlib .backends .backend_gtk3agg import FigureCanvas
17
+ # from matplotlib.backends.backend_gtk3cairo import FigureCanvas
19
18
20
19
from numpy .random import random
21
20
from matplotlib .figure import Figure
22
21
23
22
24
- class DataManager (gtk .Window ):
23
+ class DataManager (Gtk .Window ):
25
24
numRows , numCols = 20 , 10
26
25
27
26
data = random ((numRows , numCols ))
28
27
29
28
def __init__ (self ):
30
- gtk .Window .__init__ (self )
29
+ Gtk .Window .__init__ (self )
31
30
self .set_default_size (600 , 600 )
32
- self .connect ('destroy' , lambda win : gtk .main_quit ())
31
+ self .connect ('destroy' , lambda win : Gtk .main_quit ())
33
32
34
33
self .set_title ('GtkListStore demo' )
35
34
self .set_border_width (8 )
36
35
37
- vbox = gtk .VBox (False , 8 )
36
+ vbox = Gtk .VBox (False , 8 )
38
37
self .add (vbox )
39
38
40
- label = gtk .Label ('Double click a row to plot the data' )
39
+ label = Gtk .Label ('Double click a row to plot the data' )
41
40
42
- vbox .pack_start (label , False , False )
41
+ vbox .pack_start (label , False , False , 0 )
43
42
44
- sw = gtk .ScrolledWindow ()
45
- sw .set_shadow_type (gtk . SHADOW_ETCHED_IN )
46
- sw .set_policy (gtk . POLICY_NEVER ,
47
- gtk . POLICY_AUTOMATIC )
48
- vbox .pack_start (sw , True , True )
43
+ sw = Gtk .ScrolledWindow ()
44
+ sw .set_shadow_type (Gtk . ShadowType . ETCHED_IN )
45
+ sw .set_policy (Gtk . PolicyType . NEVER ,
46
+ Gtk . PolicyType . AUTOMATIC )
47
+ vbox .pack_start (sw , True , True , 0 )
49
48
50
49
model = self .create_model ()
51
50
52
- self .treeview = gtk .TreeView (model )
51
+ self .treeview = Gtk .TreeView (model )
53
52
self .treeview .set_rules_hint (True )
54
53
55
54
# matplotlib stuff
56
55
fig = Figure (figsize = (6 , 4 ))
57
56
58
- self .canvas = FigureCanvas (fig ) # a gtk .DrawingArea
59
- vbox .pack_start (self .canvas , True , True )
57
+ self .canvas = FigureCanvas (fig ) # a Gtk .DrawingArea
58
+ vbox .pack_start (self .canvas , True , True , 0 )
60
59
ax = fig .add_subplot (111 )
61
60
self .line , = ax .plot (self .data [0 , :], 'go' ) # plot the first row
62
61
@@ -65,9 +64,9 @@ def __init__(self):
65
64
66
65
self .add_columns ()
67
66
68
- self .add_events (gdk .BUTTON_PRESS_MASK |
69
- gdk .KEY_PRESS_MASK |
70
- gdk .KEY_RELEASE_MASK )
67
+ self .add_events (Gdk . EventMask .BUTTON_PRESS_MASK |
68
+ Gdk . EventMask .KEY_PRESS_MASK |
69
+ Gdk . EventMask .KEY_RELEASE_MASK )
71
70
72
71
def plot_row (self , treeview , path , view_column ):
73
72
ind , = path # get the index into data
@@ -77,18 +76,18 @@ def plot_row(self, treeview, path, view_column):
77
76
78
77
def add_columns (self ):
79
78
for i in range (self .numCols ):
80
- column = gtk .TreeViewColumn ('%d' % i , gtk .CellRendererText (), text = i )
79
+ column = Gtk .TreeViewColumn (str ( i ), Gtk .CellRendererText (), text = i )
81
80
self .treeview .append_column (column )
82
81
83
82
def create_model (self ):
84
83
types = [float ]* self .numCols
85
- store = gtk .ListStore (* types )
84
+ store = Gtk .ListStore (* types )
86
85
87
86
for row in self .data :
88
- store .append (row )
87
+ store .append (tuple ( row ) )
89
88
return store
90
89
91
90
92
91
manager = DataManager ()
93
92
manager .show_all ()
94
- gtk .main ()
93
+ Gtk .main ()
0 commit comments