/usr/share/help/gl/gnome-devel-demos/scale.py.page is in gnome-devel-docs 3.28.0-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 | <?xml version="1.0" encoding="utf-8"?>
<page xmlns="http://projectmallard.org/1.0/" xmlns:its="http://www.w3.org/2005/11/its" xmlns:xi="http://www.w3.org/2001/XInclude" type="guide" style="task" id="scale.py" xml:lang="gl">
<info>
<title type="text">Scale (Python)</title>
<link type="guide" xref="beginner.py#entry"/>
<link type="seealso" xref="grid.py"/>
<link type="next" xref="textview.py"/>
<revision version="0.2" date="2012-06-23" status="draft"/>
<credit type="author copyright">
<name>Marta Maria Casetti</name>
<email its:translate="no">mmcasetti@gmail.com</email>
<years>2012</years>
</credit>
<desc>Un widget de desprazamento para seleccionar un valor dun rango</desc>
<mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
<mal:name>Fran Dieguez</mal:name>
<mal:email>frandieguez@gnome.org</mal:email>
<mal:years>2012-2013.</mal:years>
</mal:credit>
</info>
<title>Escala</title>
<media type="image" mime="image/png" src="media/scale.png"/>
<p>Desprazar as escalas!</p>
<links type="section"/>
<section id="code">
<title>Código usado para xerar este exemplo</title>
<code mime="text/x-python" style="numbered">from gi.repository import Gtk
import sys
class MyWindow(Gtk.ApplicationWindow):
def __init__(self, app):
Gtk.Window.__init__(self, title="Scale Example", application=app)
self.set_default_size(400, 300)
self.set_border_width(5)
# two adjustments (initial value, min value, max value,
# step increment - press cursor keys to see!,
# page increment - click around the handle to see!,
# page size - not used here)
ad1 = Gtk.Adjustment(0, 0, 100, 5, 10, 0)
ad2 = Gtk.Adjustment(50, 0, 100, 5, 10, 0)
# an horizontal scale
self.h_scale = Gtk.Scale(
orientation=Gtk.Orientation.HORIZONTAL, adjustment=ad1)
# of integers (no digits)
self.h_scale.set_digits(0)
# that can expand horizontally if there is space in the grid (see
# below)
self.h_scale.set_hexpand(True)
# that is aligned at the top of the space allowed in the grid (see
# below)
self.h_scale.set_valign(Gtk.Align.START)
# we connect the signal "value-changed" emitted by the scale with the callback
# function scale_moved
self.h_scale.connect("value-changed", self.scale_moved)
# a vertical scale
self.v_scale = Gtk.Scale(
orientation=Gtk.Orientation.VERTICAL, adjustment=ad2)
# that can expand vertically if there is space in the grid (see below)
self.v_scale.set_vexpand(True)
# we connect the signal "value-changed" emitted by the scale with the callback
# function scale_moved
self.v_scale.connect("value-changed", self.scale_moved)
# a label
self.label = Gtk.Label()
self.label.set_text("Move the scale handles...")
# a grid to attach the widgets
grid = Gtk.Grid()
grid.set_column_spacing(10)
grid.set_column_homogeneous(True)
grid.attach(self.h_scale, 0, 0, 1, 1)
grid.attach_next_to(
self.v_scale, self.h_scale, Gtk.PositionType.RIGHT, 1, 1)
grid.attach(self.label, 0, 1, 2, 1)
self.add(grid)
# any signal from the scales is signaled to the label the text of which is
# changed
def scale_moved(self, event):
self.label.set_text("Horizontal scale is " + str(int(self.h_scale.get_value())) +
"; vertical scale is " + str(self.v_scale.get_value()) + ".")
class MyApplication(Gtk.Application):
def __init__(self):
Gtk.Application.__init__(self)
def do_activate(self):
win = MyWindow(self)
win.show_all()
def do_startup(self):
Gtk.Application.do_startup(self)
app = MyApplication()
exit_status = app.run(sys.argv)
sys.exit(exit_status)
</code>
</section>
<section id="methods">
<title>Métodos útiles para o widget Scale</title>
<p>A Gtk.Adjustment is needed to construct the Gtk.Scale. This is the representation of a value with a lower and upper bound, together with step and page increments, and a page size, and it is constructed as <code>Gtk.Adjustment(value, lower, upper, step_increment, page_increment, page_size)</code> where the fields are of type <code>float</code>; <code>step_increment</code> is the increment/decrement that is obtained by using the cursor keys, <code>page_increment</code> the one that is obtained clicking on the scale itself. Note that <code>page_size</code> is not used in this case, it should be set to <code>0</code>.</p>
<p>In line 28 the signal <code>"value-changed"</code> is connected to the callback function <code>scale_moved()</code> using <code><var>widget</var>.connect(<var>signal</var>, <var>callback function</var>)</code>. See <link xref="signals-callbacks.py"/> for a more detailed explanation.</p>
<list>
<item><p><code>get_value()</code> retrieves the current value of the scale; <code>set_value(value)</code> sets it (if the <code>value</code>, of type <code>float</code>, is outside the minimum or maximum range, it will be clamped to fit inside them). These are methods of the class Gtk.Range.</p></item>
<item><p>Use <code>set_draw_value(False)</code> to avoid displaying the current value as a string next to the slider.</p></item>
<item><p>To highlight the part of the scale between the origin and the current value:</p>
<code mime="text/x-python">
self.h_scale.set_restrict_to_fill_level(False)
self.h_scale.set_fill_level(self.h_scale.get_value())
self.h_scale.set_show_fill_level(True)</code>
<p>in the callback function of the "value-changed" signal, so to have the new filling every time the value is changed. These are methods of the class Gtk.Range.</p>
</item>
<item><p><code>add_mark(value, position, markup)</code> adds a mark at the <code>value</code> (<code>float</code> or <code>int</code> if that is the precision of the scale), in <code>position</code> (<code>Gtk.PositionType.LEFT, Gtk.PositionType.RIGHT, Gtk.PositionType.TOP, Gtk.PositionType.BOTTOM</code>) with text <code>Null</code> or <code>markup</code> in the Pango Markup Language. To clear marks, <code>clear_marks()</code>.</p></item>
<item><p><code>set_digits(digits)</code> sets the precision of the scale at <code>digits</code> digits.</p></item>
</list>
</section>
<section id="references">
<title>API References</title>
<p>Neste exemplo empregaremos o seguinte:</p>
<list>
<item><p><link href="http://developer.gnome.org/gtk3/unstable/GtkScale.html">GtkScale</link></p></item>
<item><p><link href="http://developer.gnome.org/gtk3/unstable/GtkAdjustment.html">GtkAdjustment</link></p></item>
<item><p><link href="http://developer.gnome.org/gtk3/unstable/gtk3-Standard-Enumerations.html">Standard Enumerations</link></p></item>
</list>
</section>
</page>
|