Tabellen

Fragen zu Tkinter.
Antworten
spaceboy
User
Beiträge: 5
Registriert: Freitag 11. Mai 2007, 16:21

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
schlangenbeschwörer
User
Beiträge: 419
Registriert: Sonntag 3. September 2006, 15:11
Wohnort: in den weiten von NRW
Kontaktdaten:

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?
Costi
User
Beiträge: 545
Registriert: Donnerstag 17. August 2006, 14:21

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
cp != mv
Benutzeravatar
Mr_Snede
User
Beiträge: 387
Registriert: Sonntag 8. Februar 2004, 16:02
Wohnort: D-Dorf, Bo

spaceboy
User
Beiträge: 5
Registriert: Freitag 11. Mai 2007, 16:21

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
Benutzeravatar
Mr_Snede
User
Beiträge: 387
Registriert: Sonntag 8. Februar 2004, 16:02
Wohnort: D-Dorf, Bo

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()
spaceboy
User
Beiträge: 5
Registriert: Freitag 11. Mai 2007, 16:21

genau so,
danke Mr_Snede, jetzt bin ich schon ein stück weiter.
Benutzeravatar
Michael Schneider
User
Beiträge: 569
Registriert: Samstag 8. April 2006, 12:31
Wohnort: Brandenburg

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
Diese Nachricht zersört sich in 5 Sekunden selbst ...
pktm
User
Beiträge: 8
Registriert: Dienstag 9. Januar 2007, 19:18

Na gibt es denn kein Tabellen-Widget? Sowas wo man Zeilen und Spalten angibt?
Benutzeravatar
Michael Schneider
User
Beiträge: 569
Registriert: Samstag 8. April 2006, 12:31
Wohnort: Brandenburg

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
Diese Nachricht zersört sich in 5 Sekunden selbst ...
Redprince
User
Beiträge: 128
Registriert: Freitag 22. Oktober 2004, 09:22
Wohnort: Salzgitter
Kontaktdaten:

pktm hat geschrieben:Na gibt es denn kein Tabellen-Widget? Sowas wo man Zeilen und Spalten angibt?
Für Tkinter jedenfalls nicht im Standardpaket.
I am not part of the allesburner. I am the [url=http://allesburner.de]allesburner[/url].
hwm
User
Beiträge: 39
Registriert: Mittwoch 20. April 2005, 23:33

Benutzeravatar
Michael Schneider
User
Beiträge: 569
Registriert: Samstag 8. April 2006, 12:31
Wohnort: Brandenburg

hwm hat geschrieben:Doch, gibt es:

http://sourceforge.net/projects/tktable/
Sieht mir nicht nach Standard Tkinter Paket aus...
Diese Nachricht zersört sich in 5 Sekunden selbst ...
hwm
User
Beiträge: 39
Registriert: Mittwoch 20. April 2005, 23:33

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.
Benutzeravatar
Michael Schneider
User
Beiträge: 569
Registriert: Samstag 8. April 2006, 12:31
Wohnort: Brandenburg

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
Diese Nachricht zersört sich in 5 Sekunden selbst ...
hwm
User
Beiträge: 39
Registriert: Mittwoch 20. April 2005, 23:33

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!
Benutzeravatar
Michael Schneider
User
Beiträge: 569
Registriert: Samstag 8. April 2006, 12:31
Wohnort: Brandenburg

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
Diese Nachricht zersört sich in 5 Sekunden selbst ...
Antworten