Suche TreeView Beispiel

Programmierung für GNOME und GTK+, GUI-Erstellung mit Glade.
Antworten
Kalli87
User
Beiträge: 281
Registriert: Montag 10. November 2014, 11:27

Ok Ich formuliere die Frage mal anders.
Hat jemand ein Beispiel für die Darstellung einer Tabelle?
Kalli87
User
Beiträge: 281
Registriert: Montag 10. November 2014, 11:27

Also ich möchte per Datenbankabfrage die Datensätze in
einer Tabelle ausgeben lassen.
BlackJack

@Kalli87: Ich weiss nicht ob da ein superkonkretes Beispiel wirklich so zielführend ist. Das würde einfach zu viel enthalten was Du ohne es zu verstehen übernehmen würdest. Dabei lernst Du also nichts was Dich in die Lage versetzt solche Probleme künftig eigenständig zu lösen. Der originalen Fragestellung aus dem ersten Beitrag nach (sinngemäss „gebt mir ein Beispiel, aber ohne Klassen oder so”) bist Du IMHO noch nicht so weit. Ich denke Du solltest zuerst einmal Python bis einschliesslich objektorientierter Programmierung (OOP) lernen und dann ein GUI-Toolkit Deiner Wahl *von Grund auf*, und nicht gleich mit einem der komplizierteren Widgets die Gtk bietet anfangen. Das ist im „Python GTK+ 3 Tutorial” erst im Kapitel 11 (und in 12 die CellRenderer). Das Wissen aus den Kapiteln davor ist aber auch wichtig.
Kalli87
User
Beiträge: 281
Registriert: Montag 10. November 2014, 11:27

Das Problem bei der Sache ist das ich komplett alleine dastehe und Python erlernen muss.
In dem Praktikum wo ich bin kann mir keiner helfen, keiner hat eine Ahnung wie Python funktioniert.
In der Weiterbildung selbst kommt kein Python vor nur C (Was jetzt Schule betrifft), deswegen hab Ich mich ja hier im Forum angemeldet damit mir geholfen werden kann.

An sich hast du ja auch recht was du geschrieben hast und ich schritt für schritt es erlernen muss aber mein Chef im Praktikum will Ergebnisse sehen und wenn ich mir mühsam alles selbst erlernen muss geht es mit meiner Produktivität gegen 0 zu. Ich hab halt keinen Ansprechpartner :K
BlackJack

@Kalli87: Ohne selbst etwas zu erlenen geht es halt nicht. Wir können das nicht für Dich lernen. Und Python-Grundlagen und die Grundlagen eines GUI-Toolkits braucht man nun mal um dann in Python mit dem GUI-Toolkit eine GUI zu erstellen. Für GUI-Toolkits braucht man OOP und speziell hier auch noch Entwurfsmuster wie das Model-View-Controller-Entwurfsmuster (MVC), weil das GUI-Toolkit das verwendet.
Kalli87
User
Beiträge: 281
Registriert: Montag 10. November 2014, 11:27

Ok.... also alles auf Anfang und ich werde versuchen mein aktuelles Programm in OOP umzusetzen :|
Kalli87
User
Beiträge: 281
Registriert: Montag 10. November 2014, 11:27

Ich hab folgendes Beispiel gefunden welches auch vom Aufbau her
genau das ist was ich suche.

Code: Alles auswählen

#!/usr/bin/python

# ZetCode PyGTK tutorial 
#
# This example shows a TreeView widget
# in a list view mode
#
# author: jan bodnar
# website: zetcode.com 
# last edited: February 2009


import gtk

actresses = [('jessica alba', 'pomona', '1981'), ('sigourney weaver', 'new york', '1949'),
    ('angelina jolie', 'los angeles', '1975'), ('natalie portman', 'jerusalem', '1981'),
    ('rachel weiss', 'london', '1971'), ('scarlett johansson', 'new york', '1984' )]


class PyApp(gtk.Window):
    def __init__(self):
        super(PyApp, self).__init__()
        
        self.set_size_request(350, 250)
        self.set_position(gtk.WIN_POS_CENTER)
        
        self.connect("destroy", gtk.main_quit)
        self.set_title("ListView")

        vbox = gtk.VBox(False, 8)
        
        sw = gtk.ScrolledWindow()
        sw.set_shadow_type(gtk.SHADOW_ETCHED_IN)
        sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
        
        vbox.pack_start(sw, True, True, 0)

        store = self.create_model()

        treeView = gtk.TreeView(store)
        treeView.connect("row-activated", self.on_activated)
        treeView.set_rules_hint(True)
        sw.add(treeView)

        self.create_columns(treeView)
        self.statusbar = gtk.Statusbar()
        
        vbox.pack_start(self.statusbar, False, False, 0)

        self.add(vbox)
        self.show_all()


    def create_model(self):
        store = gtk.ListStore(str, str, str)

        for act in actresses:
            store.append([act[0], act[1], act[2]])

        return store


    def create_columns(self, treeView):
    
        rendererText = gtk.CellRendererText()
        column = gtk.TreeViewColumn("Name", rendererText, text=0)
        column.set_sort_column_id(0)    
        treeView.append_column(column)
        
        rendererText = gtk.CellRendererText()
        column = gtk.TreeViewColumn("Place", rendererText, text=1)
        column.set_sort_column_id(1)
        treeView.append_column(column)

        rendererText = gtk.CellRendererText()
        column = gtk.TreeViewColumn("Year", rendererText, text=2)
        column.set_sort_column_id(2)
        treeView.append_column(column)


    def on_activated(self, widget, row, col):
        
        model = widget.get_model()
        text = model[row][0] + ", " + model[row][1] + ", " + model[row][2]
        self.statusbar.push(0, text)



PyApp()
gtk.main()
Bild


Mein Problem aber dazu ist jetzt das ich es nicht ganz verstehe
bzw wenn ichs stück für stück auseinander nehme es nicht funktioniert.
Z.B. das ich mir wenigstens die Spalten anlege ohne Inhalt etc.

Vllt kann einer von euch mir erneut auf die sprünge helfen :)
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

@Kalli87: Der Code erwartet ja auch ziemlich hart an vielen Stellen, dass es genau 3 Spalten gibt, nimmt sich magischerweise aus globalen Variablen den Inhalt und alles in allem ist das fest mit einem Hauptfenster verbunden. Man kann den Code lesen, verstehen, wegschmeißen und für seine Bedürfnisse neuschreiben, am besten ohne die vielen Nebenbedingungen.

Was verstehst Du denn jetzt konkret nicht?
Kalli87
User
Beiträge: 281
Registriert: Montag 10. November 2014, 11:27

Eigentlich der Zusammenhang, also wie was genau zusammenhängt.
Vieles versteh ich liegt aber auch daran das es recht leicht beschriftet is
und somit auch klar erkennbar ist was jetzt was macht oder darstellen soll.

Es is ja wie schon gesagt nur ein Beispiel was vom Aufbau her das ist was ich suche
nur brauch ich z.B. 4 Spalten

Ich hab mehrer Notebook-Tabs und ein Tab davon soll halt eine Tabelle anzeigen
mehr eigentlich nicht und soweit ich mitbekommen habe funzt das halt mit GTK und Treeview
nur is es doch recht schwierig für mich
Kalli87
User
Beiträge: 281
Registriert: Montag 10. November 2014, 11:27

Hab es nun auf meine Art gelöst,
sieht zwar nicht schön aus vom Code her und auch nicht vom
Design her aber es funzt :)
Antworten