/usr/share/help/cs/gnome-devel-demos/buttonbox.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 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 | <?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="buttonbox.py" xml:lang="cs">
<info>
<title type="text">ButtonBox (Python)</title>
<link type="guide" xref="beginner.py#layout"/>
<link type="seealso" xref="button.py"/>
<link type="next" xref="statusbar.py"/>
<revision version="0.2" date="2012-08-01" status="stub"/>
<credit type="author copyright">
<name>Marta Maria Casetti</name>
<email its:translate="no">mmcasetti@gmail.com</email>
<years>2012</years>
</credit>
<desc>Kontejner pro uspořádání tlačítek</desc>
</info>
<title>ButtonBox</title>
<media type="image" mime="image/png" src="media/buttonbox_calculator.png"/>
<p>Kalkulačka – tlačítka jsou umístěna do vodorovných widgetů ButtonBox.</p>
<links type="section"/>
<section id="code">
<title>Kód použitý k vygenerování tohoto příkladu</title>
<code mime="text/python" style="numbered">from gi.repository import Gtk
import sys
class MyWindow(Gtk.ApplicationWindow):
def __init__(self, app):
Gtk.Window.__init__(self, title="Calculator", application=app)
self.set_default_size(350, 200)
self.set_border_width(10)
# Vstupní pole
self.entry = Gtk.Entry()
# s počátečním textem
self.entry.set_text('0')
# zarovnaným doprava
self.entry.set_alignment(1)
# Text v poli nemůže bý změněn psaním
self.entry.set_can_focus(False)
# Mřížka
grid = Gtk.Grid()
grid.set_row_spacing(5)
# do které se připojí vstupní pole
grid.attach(self.entry, 0, 0, 1, 1)
# Popisky pro tlačítka
buttons = [7, 8, 9, '/',
4, 5, 6, '*',
1, 2, 3, '-',
'C', 0, '=', '+']
# Každý z řádků je ButtonBox připojený do mřížky
for i in range(4):
hbox = Gtk.ButtonBox.new(Gtk.Orientation.HORIZONTAL)
hbox.set_spacing(5)
grid.attach(hbox, 0, i + 1, 1, 1)
# Každý ButtonBox má 4 tlačíka napojená na funkci zpětného volání
for j in range(4):
button = Gtk.Button(label=buttons[i * 4 + j])
button.set_can_focus(False)
button.connect("clicked", self.button_clicked)
hbox.add(button)
# Pár proměnných pro výpočty
self.first_number = 0
self.second_number = 0
self.counter = 0
self.operation = ""
# Přidá mřížku do okna
self.add(grid)
# Funkce zpětného volání pro všechna tlačítka
def button_clicked(self, button):
# Pro početní operace
if button.get_label() == '+':
self.counter += 1
if self.counter > 1:
self.do_operation()
self.entry.set_text('0')
self.operation = "plus"
elif button.get_label() == '-':
self.counter += 1
if self.counter > 1:
self.do_operation()
self.entry.set_text('0')
self.operation = "minus"
elif button.get_label() == '*':
self.counter += 1
if self.counter > 1:
self.do_operation()
self.entry.set_text('0')
self.operation = "multiplication"
elif button.get_label() == '/':
self.counter += 1
if self.counter > 1:
self.do_operation()
self.entry.set_text('0')
self.operation = "division"
# Pro =
elif button.get_label() == '=':
self.do_operation()
self.entry.set_text(str(self.first_number))
self.counter = 1
# Pro Zrušit
elif button.get_label() == 'C':
self.first_number = 0
self.second_number = 0
self.counter = 0
self.entry.set_text('')
self.operation = ""
# Pro číslice
else:
new_digit = int(button.get_label())
if self.entry.get_text() == 'error':
number = 0
else:
number = int(self.entry.get_text())
number = number * 10 + new_digit
if self.counter == 0:
self.first_number = number
else:
self.second_number = number
self.entry.set_text(str(number))
def do_operation(self):
if self.operation == "plus":
self.first_number += self.second_number
elif self.operation == "minus":
self.first_number -= self.second_number
elif self.operation == "multiplication":
self.first_number *= self.second_number
elif self.operation == "division":
try:
self.first_number /= self.second_number
except ZeroDivisionError:
self.first_number = 0
self.second_number = 0
self.counter = 0
self.entry.set_text('error')
self.operation = ""
return
else:
self.first_number = 0
self.second_number = 0
self.counter = 0
self.entry.set_text('error')
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>Užitečné metody pro widget ButtonBox</title>
<list>
<item><p>Rozvržení widgetu ButtonBox se nastavuje pomocí <code>set_layout(rozvržení)</code>, kde <code>rozvržení</code> může být <code>Gtk.ButtonBoxStyle.SPREAD</code> (tlačítka jsou v boxu rovnoměrně rozložená), <code>Gtk.ButtonBoxStyle.EDGE</code> (tlačítka jsou umístěna u hran boxu), <code>Gtk.ButtonBoxStyle.START</code> (tlačítka jsou seskupena na začátku boxu), <code>Gtk.ButtonBoxStyle.END</code> (tlačítka jsou seskupena na konci boxu), <code>Gtk.ButtonBoxStyle.CENTER</code> (tlačítka jsou na středu boxu).</p></item>
<item><p><code>set_child_secondary(tlačítko, je_druhé)</code> nastavuje, že <code>tlačítko</code> se má objevit v druhé skupině potomků. Typické použití jako druhého tlačítka je tlačítko nápověda v dialogovém okně. Tato skupina se objeví za ostatními potomky v případě, že styl je <code>START</code>, <code>SPREAD</code> or <code>EDGE</code>, a nebo před ostatními potomky, v případě že styl je <code>END</code>. Pokud je styl <code>START</code> nebo <code>END</code>, je druhý potomek zarovnán k opačnému konci tlačítkového boxu než hlavní potomek. Pro ostatní styly se objeví hned vedle hlavního potomka.</p></item>
<item><p><code>set_child_non_homogeneous(tlačítko, není_homogení)</code> nastavuje, že potomek je vynechán z homogenního nastavení velikosti. Výchozí hodnota je <code>False</code>.</p></item>
<item><p><code>set_spacing(rozestup)</code> nastaví rozestup, v pixelech, mezi tlačítky v boxu.</p></item>
</list>
</section>
<section id="references">
<title>Odkazy k API</title>
<p>V této ukázce se používá následující:</p>
<list>
<item><p><link href="http://developer.gnome.org/gtk3/stable/GtkButtonBox.html">GtkButtonBox</link></p></item>
<item><p><link href="http://developer.gnome.org/gtk3/stable/GtkBox.html">GtkBox</link></p></item>
<item><p><link href="http://developer.gnome.org/gtk3/stable/GtkButton.html">GtkButton</link></p></item>
<item><p><link href="http://developer.gnome.org/gtk3/stable/GtkEntry.html">GtkEntry</link></p></item>
<item><p><link href="http://developer.gnome.org/gtk3/stable/GtkGrid.html">GtkGrid</link></p></item>
</list>
</section>
</page>
|