Hallo,
ich habe eine kurze Frage an Euch.
Welche Widget benutzt Ihr für die Ausgabe von Datenbanken? ((tkinter)
Die Inhalte sollen lediglich angezeigt werden und müssen zunächst nicht verändert werden.
Ich beschäftige mich erst seit einigen Wochen mit Python, bin also nicht wirklich erfahren...
Vielen Dank vorab!
Reg
Widget für die Ausgabe von SQLite Inhalt gesucht
Nun, die Anzahl der Tkinter-Widgets hält sich in Grenzen. Eine vollständige Übersicht findest du hier: http://effbot.org/tkinterbook/tkinter-index.htm.
Welche Widgets die passenden sind, hängt ja auch von der Art der Daten ab.
Welche Widgets die passenden sind, hängt ja auch von der Art der Daten ab.
Hi numerix,
danke für Deine rasche Antwort. Ich habe im Momentan leider keine richtige Vorstellung welches Widget man überhaupt nehmen kann.
Es gibt wohl zusätzliche Module mit erweiterten Textboxen. Allerdings fand ich da nur Erweiterungen welche noch für Python 2.x waren. Pmw.
Korrigiert wenn dem nicht so ist.
Da ich gerade erst anfange, dachte ich gleich mit Python3 einzusteigen...
Ich will voraussichtlich eine Tabelle mit 5 Spalten und weniger als 50 Zeilen ausgeben.
Gruß
Reg
danke für Deine rasche Antwort. Ich habe im Momentan leider keine richtige Vorstellung welches Widget man überhaupt nehmen kann.
Es gibt wohl zusätzliche Module mit erweiterten Textboxen. Allerdings fand ich da nur Erweiterungen welche noch für Python 2.x waren. Pmw.
Korrigiert wenn dem nicht so ist.
Da ich gerade erst anfange, dachte ich gleich mit Python3 einzusteigen...
Ich will voraussichtlich eine Tabelle mit 5 Spalten und weniger als 50 Zeilen ausgeben.
Gruß
Reg
Reg hat geschrieben:Da ich gerade erst anfange, dachte ich gleich mit Python3 einzusteigen...
Hinsichtlich Tkinter ist das eine gute Entscheidung, dann solltest du aber auf jeden Fall Python 3.1 nehmen aufgrund der Erweiterungen von Tkinter gegenüber Python 3.0: http://docs.python.org/3.1/library/tk.html
Leider enthält Tkinter kein Tabellen-Widget. Du müsstest also entweder auf ein externes Modul zurückgreifen (falls es eins gibt; das wirst du gewiss selbst herausfinden) oder dir selbst was basteln. Je nachdem, ob du nur Anzeigen oder auch Änderungen in der Tabelle zulassen willst, kämen dafür das Label- oder das Entry-Widget in Betracht.Reg hat geschrieben:Ich will voraussichtlich eine Tabelle mit 5 Spalten und weniger als 50 Zeilen ausgeben.
Hi numerix,
ich bin leider nicht fündig geworden. Es gibt ein externes Modul Names "Tktables".
Allerdings scheint es bislang nur mit den 2.x Versionen zu arbeiten.
Also werde ich mir selbst was überlegen.
Danke nochmals an Dich!
Grüße
Reg
ich bin leider nicht fündig geworden. Es gibt ein externes Modul Names "Tktables".
Allerdings scheint es bislang nur mit den 2.x Versionen zu arbeiten.
Also werde ich mir selbst was überlegen.
Danke nochmals an Dich!
Grüße
Reg
Eventuell könnte ein Grundgerüst so aussehen. Ob das brauchbar ist, hängt allerdings von den konkreten Bedürfnissen/Inhalten ab (z.B. Spaltenbreite; ob nur angezeigt werden soll, ob Zeilenweise ausgewählt werden soll etc.).
Code: Alles auswählen
# Tkinter Table-Widget (Python 3.1)
# Ansatz mit Grundfunktionalitaet
import tkinter as tk
class Table(tk.Frame):
"""Tkinter Table Widget - Grundgerüst"""
class Cell(dict):
"""Erlaubt den komfortablen Zugriff auf die Zellinhalte
von außen über Indexpaare [zeile,spalte]. Links oben = [1,1]."""
def __init__(self, entry):
dict.__init__(self)
self.entry = entry
def __getitem__(self,key):
row, column = key
return self.entry[row][column].get()
def __setitem__(self,key,value):
row, column = key
self.entry[row][column].delete("0","end")
self.entry[row][column].insert("0",str(value))
def __init__(self, master, rows, columns):
tk.Frame.__init__(self,master)
self.wcell = [0] # erhält die Entry-Widgets für die Zellen
for row in range(1,rows+1):
rowframe = tk.Frame(self)
self.wcell.append([0])
for column in range(1,columns+1):
wc = tk.Entry(rowframe,justify="right",relief="flat",width=8)
wc.pos = row, column
wc.bind("<Button-1>",self.oncellclick)
wc.pack(side="left")
self.wcell[-1].append(wc)
rowframe.pack()
self.cell = Table.Cell(self.wcell) # für den Zugriff auf die Zellen von außen
def oncellclick(self,event):
"""Exemplarischer Eventhandler - wird bei Klick auf eine Zelle ausgeführt."""
row, column = event.widget.pos
print("Zelle [%i,%i] = %s" %(row,column,self.cell[row,column]))
# --------- Test --------------
from random import randrange
def main():
root = tk.Tk()
root.title("Table Widget")
rows, columns = 20, 5
table = Table(root,rows,columns)
table.pack()
for row in range(1,rows+1):
for column in range(1,columns+1):
table.cell[row,column] = randrange(1000)
root.mainloop()
main()
Hi numerix,
das sieht Klasse aus! Werde mich die kommenden Tage damit beschäftigen.
Habe eine stark vereinfachte Variante bereits eingebaut. Ich lese die Datenbank spaltenweise und gebe die einzelnen Tulpeln dann als Entry's in Schleifen aus.
Allerdings sieht es bei Dir deutlich besser aus. Muss mir unbedingt die Schreibweise anschauen. Da scheint einiges deutlich abgekürzt zu sein.
Gruß
Marcus
das sieht Klasse aus! Werde mich die kommenden Tage damit beschäftigen.
Habe eine stark vereinfachte Variante bereits eingebaut. Ich lese die Datenbank spaltenweise und gebe die einzelnen Tulpeln dann als Entry's in Schleifen aus.
Allerdings sieht es bei Dir deutlich besser aus. Muss mir unbedingt die Schreibweise anschauen. Da scheint einiges deutlich abgekürzt zu sein.
Gruß
Marcus