Prosta lista w GTK+

Opis

Na początku nic się nie wydaje proste, stąd właśnie ten przykład. Ogólnie to jak ma wyglądać okienko edytujemy przy pomocy graficznego narzędzia o nazwie Glade. Tu jednak zamieściłem zawartość obu plików źródłowych. Zarówno samego programu, jak i jego interfejsu.

Przykład

Zawartość pliku ./prostaLista.py

#! /usr/bin/env python
# -*- coding: utf-8 -*-
#
# Author:    Camelek.AmigaRulez
# License:    Public Domain
# Date:        niedziela, 02 styczeń 2011
#
 
import gtk, gtk.glade
import sys
 
def dodajKolumne(drzewko, tytul, nrKolumny):
    kolumna = gtk.TreeViewColumn(tytul, gtk.CellRendererText(), text=nrKolumny);
    kolumna.set_resizable(True);
    kolumna.set_sort_column_id(nrKolumny);
    drzewko.append_column(kolumna);
 
def dodajWiersz(lista, wiersz):
    lista.append(wiersz);
 
def main():
    xml = gtk.glade.XML('gui/okienkoListy.glade');
    mojeOkienko = xml.get_widget('mojeOkienko');
    mojeDrzewko = xml.get_widget('mojeDrzewko');
    mojeOkienko.connect("delete_event", gtk.main_quit);
 
    mojaLista = gtk.ListStore(str, str);
    mojeDrzewko.set_model(mojaLista);
 
    dodajKolumne(mojeDrzewko, "Produkt", 0);
    dodajKolumne(mojeDrzewko, "Cena", 1);
 
    dodajWiersz(mojaLista, ["Pierogi 1 kg", "20 zł"]);
    dodajWiersz(mojaLista, ["Makarov 1 szt.", "$179"]);
 
    mojeOkienko.show_all();
 
if __name__ == "__main__":
    main();
    gtk.main();
else:
    sys.exit(1);

Zawartość pliku ./gui/okienkoListy.glade

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
<!--Generated with glade3 3.4.5 on Sun Jan  2 22:00:56 2011 -->
<glade-interface>
  <widget class="GtkWindow" id="mojeOkienko">
    <child>
      <widget class="GtkTreeView" id="mojeDrzewko">
        <property name="visible">True</property>
        <property name="can_focus">True</property>
        <property name="headers_clickable">True</property>
        <property name="rules_hint">True</property>
        <property name="enable_grid_lines">GTK_TREE_VIEW_GRID_LINES_BOTH</property>
      </widget>
    </child>
  </widget>
</glade-interface>

Zobacz także:

O ile nie zaznaczono inaczej, treść tej strony objęta jest licencją GNU Free Documentation License.