Seite 1 von 1

Tabellen

Verfasst: Mittwoch 16. Mai 2007, 18:52
von spaceboy
Hallo,
ich hab da ein Problem, ich stehe irgendwie auf dem Schlauch. Folgendes:
Wie kann ich eine Tabelle machen, sie sollte jedoch in einem tkinter fenster erscheinen. ich meine so eine wie bei exel, so 12*6 kästchen.

danke


gruß spaceboy

blackbird hat's nach tkinter verschoben

Verfasst: Mittwoch 16. Mai 2007, 19:04
von schlangenbeschwörer
Hi!
erstmal: -> Tkinter-forum

so, was willst du denn da rein schreiben. Willst du exel nachprogrammieren, oder willst du nur ein Gitter haben, oder, oder, ...

Gruß, jj

PS: Du willst mit Tkinter exel neu programmieren, weißt aber nicht, was GUI heißt?

Verfasst: Mittwoch 16. Mai 2007, 22:35
von Costi
in Tkinter hast du Listbox, die nur 1*X kastechen macht
in pmw oder tix gibts aber vieleicht sowas
moeglicherweise kannst du das auch mit Entry`s simmulieren

gruesse
costi

Verfasst: Donnerstag 17. Mai 2007, 05:00
von Mr_Snede

Verfasst: Samstag 19. Mai 2007, 11:07
von spaceboy
ich will ein gitter haben, in den oberen und seitlichen kästchen soll was stehen, in den anderen, soll man erst nachträglich was reinschreiben können

Verfasst: Samstag 19. Mai 2007, 14:57
von Mr_Snede
Sowas?:

Code: Alles auswählen

import Tkinter as tk

master = tk.Tk()

columnheaders = ["   ","Spalte 1","Spalte 2","Spalte 3"]
rowbeginners = ["Zeile 1","Zeile 2","Zeile 3","Zeile 4","Zeile 5",]

i=0
for row in rowbeginners:
    n=0
    for column in columnheaders:
        if i == 0:
            tk.Label(master, width=20,text=column
                ).grid(row=i, column=n, sticky=tk.W+tk.E)
        elif n == 0:
            tk.Label(master, width=20,text=row
                ).grid(row=i, column=n, sticky=tk.W+tk.E)
        else:
            tk.Entry(master, width=20,background='white'
                ).grid(row=i, column=n, sticky=tk.W+tk.E)
        n+=1
    i+=1

tk.mainloop()

Verfasst: Montag 21. Mai 2007, 13:58
von spaceboy
genau so,
danke Mr_Snede, jetzt bin ich schon ein stück weiter.

Verfasst: Mittwoch 30. Mai 2007, 07:23
von Michael Schneider
spaceboy hat geschrieben:genau so,
danke Mr_Snede, jetzt bin ich schon ein stück weiter.
Hi,

solange Du das auf einen Bildschirm bekommst, ist der grid-Manager optimal. Nur: sobald Du da Bildlaufleisten einbaust, kommen die ersten Problemchen auf. Jedenfalls nach meiner Erfahrung. Bei mir komme ich nämlich über winfo nicht an die tatsächliche Position der Widgets ran, ich bekomme immer Null oder eins. Da half mir bislang nur der Workaround über den Place-Manager oder das Einfügen der Widgets als Windows in einen Canvas.

Aber das ist ein weites Feld. Wenn also noch Fragen aufkommen, lass uns unsere Erfahrung mit Dir teilen. :-)

Grüße,
der Michel

Verfasst: Mittwoch 20. Juni 2007, 08:16
von pktm
Na gibt es denn kein Tabellen-Widget? Sowas wo man Zeilen und Spalten angibt?

Verfasst: Mittwoch 20. Juni 2007, 09:03
von Michael Schneider
pktm hat geschrieben:Na gibt es denn kein Tabellen-Widget? Sowas wo man Zeilen und Spalten angibt?
Hi,

soviel ich weiß nein. Ich wollte aber generell mal ein kleines, allgemeines Tabellenwidget schreiben. Da es der Allgemeinheit nutzen soll, würde ich mal einen Thread zum Sammeln der Requirements starten. :-)

Schau doch mal, ob Du aus meinem überflächlich dahingetippten Ansatz etwas machen kannst (oben):
http://www.python-forum.de/topic-11010.html?highlight=
Kurz zur Erläuterung:
Diese Tabelle wird einmal erzeugt. Dazu ist momentan die Liste der Schlüssel vorgegeben, was den Spaltenköpfen entspricht. Ändere die Klasse am besten so ab, dass sie die Liste der Schlüssel (entspr. Spaltenköpfen) als Argument bekommt. Die Anzahl der Zeilen wird durch die Anzahl der Elemente von Attribut lInhalt bestimmt. Diese Elemente sind Dictionaries, die als Schlüssel ein Element von Tabelle.lKeys enthalten (gibt die Spalte an) und als Wert den Tabellenwert.

Einmal erzeugt bleibt die Tabelle vom Aufbau her wie sie ist (obwohl die Spaltenbreite noch variieren kann). Mit Tabelle.update_table() kannst Du dann eine aktualisiere oder andere Liste von Dictionaries übergeben, um die Werte zu ändern. So braucht Du die Werte nur in den Dictionaries zu ändern oder Datensätze entfernen oder hinzufügen. ACHTUNG: es dürfen nicht mehr Dictionaries in der Liste sein, als bei der Initialisierung -> diese Ausnahme müsste noch abgefangen werden.

Ich weiß, es gibt da noch viel zutun. Ist nur eine Übergangslösung.

Grüße,
Michael

Verfasst: Mittwoch 20. Juni 2007, 09:03
von Redprince
pktm hat geschrieben:Na gibt es denn kein Tabellen-Widget? Sowas wo man Zeilen und Spalten angibt?
Für Tkinter jedenfalls nicht im Standardpaket.

Verfasst: Samstag 23. Juni 2007, 12:51
von hwm

Verfasst: Samstag 23. Juni 2007, 19:12
von Michael Schneider
hwm hat geschrieben:Doch, gibt es:

http://sourceforge.net/projects/tktable/
Sieht mir nicht nach Standard Tkinter Paket aus...

Verfasst: Sonntag 24. Juni 2007, 02:44
von hwm
Michael Schneider hat geschrieben:
hwm hat geschrieben:Doch, gibt es:

http://sourceforge.net/projects/tktable/
Sieht mir nicht nach Standard Tkinter Paket aus...

Na und? Was Du vorhast, auch nicht.

Verfasst: Sonntag 24. Juni 2007, 08:31
von Michael Schneider
hwm hat geschrieben:
Michael Schneider hat geschrieben:
hwm hat geschrieben:Doch, gibt es:

http://sourceforge.net/projects/tktable/
Sieht mir nicht nach Standard Tkinter Paket aus...

Na und? Was Du vorhast, auch nicht.
Habe ich das behauptet?? Du hast behauptet, dass es das Widget im Standardpaket gibt (siehe oben), nachdem Redprince schrieb:
Für Tkinter jedenfalls nicht im Standardpaket.
Vielleicht ist das ein Missverständnis und Du meintest ein voriges Posting, dann solltest Du das aber auch schreiben.

Man hat Dir schon im anderen Thread geantwortet, dass man dafür ein extra Tcl-Paket installieren muss, ob das so ist kann ich nicht beurteilen. Ich kann das bei mir auf Arbeit nicht, und brauche trotzdem ein Tabellenwidget. Außerdem haben wir dann auch die Urheberrechte. Dashalb hat "mein" Projekt jede Existenzberechtigung.

Grüße,
Michael

Verfasst: Sonntag 24. Juni 2007, 16:43
von hwm
Also ich musste nichts extra installieren, wenn auch die Installation von Tktable hakelig ist. Wenn ich mich recht entsinne, war das Installationsscript fehlerhaft und ich musste es von Hand korrigieren.

Ansonsten bin ich ja bei Dir, ich hätte auch gerne ein Tabellenwidget in Python geschrieben (Tktable ist in C!), welches man sich dann bei Bedarf auch leicht anpassen kann. Also macht mal schön!

Verfasst: Montag 25. Juni 2007, 06:29
von Michael Schneider
Hi hwm,

ich denke, ich habe Deinen Bezug tatsächlich fehlinterpretiert, sorry.

Bei mir auf der Arbeit wird HP-UX eingesetzt und ich gehe davon aus, dass das Modul speziell dafür kompiliert sein muss. Und kompilierte Software kommt da nur sehr schwer ins Haus.

Grüße,
Michael