Entrys einfach erstellen

Fragen zu Tkinter.
Benutzeravatar
Mawilo
User
Beiträge: 446
Registriert: Sonntag 22. Februar 2004, 10:58
Wohnort: Sachsen
Kontaktdaten:

Entrys einfach erstellen

Beitragvon Mawilo » Mittwoch 12. Januar 2005, 23:23

Hallo,

ich benötige eine kleine Tabelle zur Datenerfassung. Realisiert habe ich das mit Entrys. Dadurch wird der Code ziemlich aufgebläht und sieht megagrausam aus.

Code: Alles auswählen

class rel_definieren:
    def __init__(self):
        self.hf = Tk()
        self.hf.title('Werte definieren')
        self.fr01 = Frame(self.hf,bd=8)
        self.fr01.pack()
        self.lb01 = Label(self.fr01,text='Rel:',bd=3)
        self.lb01.grid(row=1,column=0,sticky=W)
        self.lb02 = Label(self.fr01,text='von:',bd=3)
        self.lb02.grid(row=1,column=1,sticky=W)
        self.lb03 = Label(self.fr01,text='bis:',bd=3)
        self.lb03.grid(row=1,column=2,sticky=W)
        self.en011 = Entry(self.fr01,width=7)
        self.en011.grid(row=2,column=0)
        self.en012 = Entry(self.fr01,width=13)
        self.en012.grid(row=2,column=1)
        self.en013 = Entry(self.fr01,width=13)
        self.en013.grid(row=2,column=2)
        self.en021 = Entry(self.fr01,width=7)
        self.en021.grid(row=3,column=0)
        self.en022 = Entry(self.fr01,width=13)
        self.en022.grid(row=3,column=1)
        self.en023 = Entry(self.fr01,width=13)
        self.en023.grid(row=3,column=2)
        self.en031 = Entry(self.fr01,width=7)
        self.en031.grid(row=4,column=0)
        self.en032 = Entry(self.fr01,width=13)
        self.en032.grid(row=4,column=1)
        self.en033 = Entry(self.fr01,width=13)
        self.en033.grid(row=4,column=2)
        self.en041 = Entry(self.fr01,width=7)
        self.en041.grid(row=5,column=0)
        self.en042 = Entry(self.fr01,width=13)
        self.en042.grid(row=5,column=1)
        self.en043 = Entry(self.fr01,width=13)
        self.en043.grid(row=5,column=2)
        self.en051 = Entry(self.fr01,width=7)
        self.en051.grid(row=6,column=0)
        self.en052 = Entry(self.fr01,width=13)
        self.en052.grid(row=6,column=1)
        self.en053 = Entry(self.fr01,width=13)
        self.en053.grid(row=6,column=2)
        self.en061 = Entry(self.fr01,width=7)
        self.en061.grid(row=7,column=0)
        self.en062 = Entry(self.fr01,width=13)
        self.en062.grid(row=7,column=1)
        self.en063 = Entry(self.fr01,width=13)
        self.en063.grid(row=7,column=2)
        self.en071 = Entry(self.fr01,width=7)
        self.en071.grid(row=8,column=0)
        self.en072 = Entry(self.fr01,width=13)
        self.en072.grid(row=8,column=1)
        self.en073 = Entry(self.fr01,width=13)
        self.en073.grid(row=8,column=2)
        self.en081 = Entry(self.fr01,width=7)
        self.en081.grid(row=9,column=0)
        self.en082 = Entry(self.fr01,width=13)
        self.en082.grid(row=9,column=1)
        self.en083 = Entry(self.fr01,width=13)
        self.en083.grid(row=9,column=2)
        self.en091 = Entry(self.fr01,width=7)
        self.en091.grid(row=10,column=0)
        self.en092 = Entry(self.fr01,width=13)
        self.en092.grid(row=10,column=1)
        self.en093 = Entry(self.fr01,width=13)
        self.en093.grid(row=10,column=2)
        self.en101 = Entry(self.fr01,width=7)
        self.en101.grid(row=11,column=0)
        self.en102 = Entry(self.fr01,width=13)
        self.en102.grid(row=11,column=1)
        self.en103 = Entry(self.fr01,width=13)
        self.en103.grid(row=11,column=2)
        self.en111 = Entry(self.fr01,width=7)
        self.en111.grid(row=12,column=0)
        self.en112 = Entry(self.fr01,width=13)
        self.en112.grid(row=12,column=1)
        self.en113 = Entry(self.fr01,width=13)
        self.en113.grid(row=12,column=2)
        self.en121 = Entry(self.fr01,width=7)
        self.en121.grid(row=13,column=0)
        self.en122 = Entry(self.fr01,width=13)
        self.en122.grid(row=13,column=1)
        self.en123 = Entry(self.fr01,width=13)
        self.en123.grid(row=13,column=2)
        self.en131 = Entry(self.fr01,width=7)
        self.en131.grid(row=14,column=0)
        self.en132 = Entry(self.fr01,width=13)
        self.en132.grid(row=14,column=1)
        self.en133 = Entry(self.fr01,width=13)
        self.en133.grid(row=14,column=2)
        self.en141 = Entry(self.fr01,width=7)
        self.en141.grid(row=15,column=0)
        self.en142 = Entry(self.fr01,width=13)
        self.en142.grid(row=15,column=1)
        self.en143 = Entry(self.fr01,width=13)
        self.en143.grid(row=15,column=2)
        self.en151 = Entry(self.fr01,width=7)
        self.en151.grid(row=16,column=0)
        self.en152 = Entry(self.fr01,width=13)
        self.en152.grid(row=16,column=1)
        self.en153 = Entry(self.fr01,width=13)
        self.en153.grid(row=16,column=2)
        self.fr02 = Frame(self.fr01)
        self.fr02.grid(row=17,columnspan=3,sticky=E+W,pady=5)
        self.bu01 = Button(self.fr02,text='Speichern',command=self.liste_speichern)
        self.bu01.pack(side=LEFT,anchor=W)
        self.bu02 = Button(self.fr02,text=' Beenden ', command=self.ende)
        self.bu02.pack(side=RIGHT,anchor=E)
        self.lineliste = []
        self.datei_einlesen()
        self.liste_anzeigen()
        self.hf.mainloop()

    def datei_einlesen(self):
        self.datei = file('rel.psv','r')
        for line in self.datei:
            line = line.replace(' ','').replace('\n','').split(';')
            del line[-1]
            self.lineliste.append(line)
        self.datei.close()
        print self.lineliste

    def liste_anzeigen(self):
        for line in self.lineliste:
            self.en011.insert('end',line[0])
            self.en012.insert('end',line[1])
            self.en013.insert('end',line[2])
           
       
    def liste_verandern(self):
        self.line01 = self.en011.get()
        if self.line01 != '':
            tmp = []
            tmp.append(self.line01)
            for i in range(int(self.en012.get()),int(self.en013.get())+1,1):
                tmp.append(i)
            self.linenliste.append(tmp)
        self.line02 = self.en021.get()
        if self.line02 != '':
            tmp = []
            tmp.append(self.line02)
            for i in range(int(self.en022.get()),int(self.en023.get())+1,1):
                tmp.append(i)
            self.linenliste.append(tmp)
        self.line03 = self.en031.get()
        if self.line03 != '':
            tmp = []
            tmp.append(self.line03)
            for i in range(int(self.en032.get()),int(self.en033.get())+1,1):
                tmp.append(i)
            self.linenliste.append(tmp)
        self.line04 = self.en041.get()
        if self.line04 != '':
            tmp = []
            tmp.append(self.line04)
            for i in range(int(self.en042.get()),int(self.en043.get())+1,1):
                tmp.append(i)
            self.linenliste.append(tmp)
        self.line05 = self.en051.get()
        if self.line05 != '':
            tmp = []
            tmp.append(self.line05)
            for i in range(int(self.en052.get()),int(self.en053.get())+1,1):
                tmp.append(i)
            self.linenliste.append(tmp)
        self.line06 = self.en061.get()
        if self.line06 != '':
            tmp = []
            tmp.append(self.line06)
            for i in range(int(self.en062.get()),int(self.en063.get())+1,1):
                tmp.append(i)
            self.linenliste.append(tmp)
        self.line07 = self.en071.get()
        if self.line07 != '':
            tmp = []
            tmp.append(self.line07)
            for i in range(int(self.en072.get()),int(self.en073.get())+1,1):
                tmp.append(i)
            self.linenliste.append(tmp)
        self.line08 = self.en081.get()
        if self.line08 != '':
            tmp = []
            tmp.append(self.line08)
            for i in range(int(self.en082.get()),int(self.en083.get())+1,1):
                tmp.append(i)
            self.linenliste.append(tmp)
        self.line09 = self.en091.get()
        if self.line09 != '':
            tmp = []
            tmp.append(self.line09)
            for i in range(int(self.en092.get()),int(self.en093.get())+1,1):
                tmp.append(i)
            self.linenliste.append(tmp)
        self.line10 = self.en101.get()
        if self.line10 != '':
            tmp = []
            tmp.append(self.line10)
            for i in range(int(self.en102.get()),int(self.en103.get())+1,1):
                tmp.append(i)
            self.linenliste.append(tmp)
        self.line11 = self.en111.get()
        if self.line11 != '':
            tmp = []
            tmp.append(self.line11)
            for i in range(int(self.en112.get()),int(self.en113.get())+1,1):
                tmp.append(i)
            self.linenliste.append(tmp)
        self.line12 = self.en121.get()
        if self.line12 != '':
            tmp = []
            tmp.append(self.line12)
            for i in range(int(self.en122.get()),int(self.en123.get())+1,1):
                tmp.append(i)
            self.linenliste.append(tmp)
        self.line13 = self.en131.get()
        if self.line13 != '':
            tmp = []
            tmp.append(self.line13)
            for i in range(int(self.en132.get()),int(self.en133.get())+1,1):
                tmp.append(i)
            self.linenliste.append(tmp)
        self.line14 = self.en141.get()
        if self.line14 != '':
            tmp = []
            tmp.append(self.line14)
            for i in range(int(self.en142.get()),int(self.en143.get())+1,1):
                tmp.append(i)
            self.linenliste.append(tmp)
        self.line15 = self.en151.get()
        if self.line15 != '':
            tmp = []
            tmp.append(self.line15)
            for i in range(int(self.en152.get()),int(self.en153.get())+1,1):
                tmp.append(i)
            self.linenliste.append(tmp)
        #print self.linenliste 
       

    def liste_speichern(self):
        self.liste_verandern()
        self.datei = file('rel.psv','w')
        for line in self.linenliste:
            lenline = len(line)
            for v in line:
                self.datei.write('%s;'%v)
            self.datei.write('\n')
        self.datei.close()
   
    def ende(self):
        self.hf.destroy()

if __name__ == '__main__':
    rel_definieren()


Das ganze funktioniert noch nicht so, wie ich es gerne möchte.

Gibt es eine Möglichkeit, den Code einfacher darzustellen? (es muss aber nicht eine Zeile sein :D) Ich hätte gerne eine Option, bei Bedarf Zeilen zuzufügen.
Ziel ist, die Daten zu erfassen, in eine Tabelle zu speichern und in einer Datei abzulegen. Aus dieser Datei werden auch wieder die vorhandenen Daten bei Programmstart eingelesen und in den Entrys angezeigt.

Vielen Dank
Stephan
Benutzeravatar
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Beitragvon Dookie » Donnerstag 13. Januar 2005, 00:38

Hi Stephan,

hier mal, mit ein paar Mascherln - äh - Schleifchen - naja - nicht ganz in einer Zeile aber doch etwas kürzer.

Code: Alles auswählen

from Tkinter import *

class rel_definieren:
    def __init__(self):
        self.datei_einlesen()

        self.hf = Tk()
        self.hf.title('Werte definieren')
        self.fr01 = Frame(self.hf,bd=8)
        self.fr01.pack()
        self.lb01 = Label(self.fr01,text='Rel:',bd=3)
        self.lb01.grid(row=0,column=0,sticky=W)
        self.lb02 = Label(self.fr01,text='von:',bd=3)
        self.lb02.grid(row=0,column=1,sticky=W)
        self.lb03 = Label(self.fr01,text='bis:',bd=3)
        self.lb03.grid(row=0,column=2,sticky=W)

        num_rows = len(self.lineliste) # Entries erstellen
        self.en = [] # Liste fuer Entries
        for i in xrange(num_rows):
            en_i0 = Entry(self.fr01,width=7)
            en_i0.grid(row=i+1,column=0)
            en_i1 = Entry(self.fr01,width=13)
            en_i1.grid(row=i+1,column=1)
            en_i2 = Entry(self.fr01,width=13)
            en_i2.grid(row=i+1,column=2)
            self.en.append([en_i0, en_i1, en_i2])
           
        self.fr02 = Frame(self.fr01)
        self.fr02.grid(row=num_rows+1,columnspan=3,sticky=E+W,pady=5)
        self.bu01 = Button(self.fr02,text='Speichern',command=self.liste_speichern)
        self.bu01.pack(side=LEFT,anchor=W)
        self.bu02 = Button(self.fr02,text=' Beenden ', command=self.ende)
        self.bu02.pack(side=RIGHT,anchor=E)
        self.liste_anzeigen()
        self.hf.mainloop()

    def datei_einlesen(self):
        self.lineliste = [] # leere Liste
        f = file('rel.psv','r')
        for line in f:
            datas = [x.strip() for x in line.split(';')]
            self.lineliste.append(datas[:-1])
        f.close()
        print self.lineliste
   
    def liste_anzeigen(self):
        for i, datas in enumerate(self.lineliste):
            self.en[i][0].insert('end', datas[0])
            self.en[i][1].insert('end', datas[1])
            self.en[i][2].insert('end', datas[2])
   
    def liste_veraendern(self):
        self.lineliste = []
        for entry in self.en:
            rel = entry[0].get()
            if rel: # einfacher als rel != ''
                von = int(entry[1].get())
                bis = int(entry[2].get())
                self.lineliste.append([rel, von, bis])

    def liste_speichern(self):
        self.liste_veraendern()
        f = file('rel.psv', 'w')
        for datas in self.lineliste:
            line = "%s; %s; %s;\n" % tuple(datas)
            f.write(line)
        f.close()

    def ende(self):
        self.hf.destroy()

if __name__ == '__main__':
    rel_definieren()

In der Liste self.en sind Listen mit je drei Entrywidgets pro Zeile.

Zum anfügen von Zeilen, müsste man die Tabelle in einen eigenen Frame packen und dort dann bei Bedarf die zusätzlichen Entries hinzufügen. Ich war jetzt aber zu faul mich da durch die Tkinterdocu durchzuhangeln, wie das am besten geht.


Gruß

Dookie

Code: Alles auswählen

#!/usr/bin/env python
import this
Benutzeravatar
Mawilo
User
Beiträge: 446
Registriert: Sonntag 22. Februar 2004, 10:58
Wohnort: Sachsen
Kontaktdaten:

Beitragvon Mawilo » Donnerstag 13. Januar 2005, 07:39

Danke Dookie,

ich werde mir das heute mal anschauen. Sieht auf alle fälle schon mal viel besser aus :D

Stephan
Benutzeravatar
Mawilo
User
Beiträge: 446
Registriert: Sonntag 22. Februar 2004, 10:58
Wohnort: Sachsen
Kontaktdaten:

Beitragvon Mawilo » Samstag 15. Januar 2005, 20:15

Hallo Dookie,

das funktioniert wunderbar und reduziert die Zeilenanzahl enorm.
Ich habe das gleich für ein weiteres Fenster verwendet (ich versuche mich gerade an einem etwas größeren Projekt). Das wirft für mich schon wieder die nächste Frage auf. Ich möchte gerne eine Scrollbar zufügen. Das habe ich bisher immer nur für ein Widget gemacht. Kann ich die Scrollbar auch über mehrere Zeilen von Entrys erstellen? Oder gibt es ein Modul in Python, mit dem man Tabellen darstellen kann?

Ich möchte gerne 10 Zeilen anzeigen, aber den Bereich von 1 bis 31 (halt für jeden Tag eine Zeile) scrollfähig machen. Weiterhin möchte ich 20 Spalten anzeigen. Falls mehr Werte vorkommen, benötige ich auch eine horizontale Scrollbar.


Code: Alles auswählen

#!/usr/bin/env python

from Tkinter import *

class entrys_mit_scrollbar:
    def __init__(self):
        self.root = Tk()
        self.fr13 = Frame(self.root)
        self.fr13.pack()
        self.en = []
        tage = 10
        for i in xrange(tage):
            self.lbtag01 = Label(self.fr13,text='%s'%(i+1),width=2)
            self.lbtag01.grid(row=i,column=0)
            self.en_i01 = Entry(self.fr13,width=4)
            self.en_i01.grid(row=i,column=1)
            self.en_i02 = Entry(self.fr13,width=4)
            self.en_i02.grid(row=i,column=2)
            self.en_i03 = Entry(self.fr13,width=4)
            self.en_i03.grid(row=i,column=3)
            self.en_i04 = Entry(self.fr13,width=4)
            self.en_i04.grid(row=i,column=4)
            self.en_i05 = Entry(self.fr13,width=4)
            self.en_i05.grid(row=i,column=5)
            self.en_i06 = Entry(self.fr13,width=4)
            self.en_i06.grid(row=i,column=6)
            self.en_i07 = Entry(self.fr13,width=4)
            self.en_i07.grid(row=i,column=7)
            self.en_i08 = Entry(self.fr13,width=4)
            self.en_i08.grid(row=i,column=8)
            self.en_i09 = Entry(self.fr13,width=4)
            self.en_i09.grid(row=i,column=9)
            self.en_i10 = Entry(self.fr13,width=4)
            self.en_i10.grid(row=i,column=10)
            self.en_i11 = Entry(self.fr13,width=4)
            self.en_i11.grid(row=i,column=11)
            self.en_i12 = Entry(self.fr13,width=4)
            self.en_i12.grid(row=i,column=12)
            self.en_i13 = Entry(self.fr13,width=4)
            self.en_i13.grid(row=i,column=13)
            self.en_i14 = Entry(self.fr13,width=4)
            self.en_i14.grid(row=i,column=14)
            self.en_i15 = Entry(self.fr13,width=4)
            self.en_i15.grid(row=i,column=15)
            self.en_i16 = Entry(self.fr13,width=4)
            self.en_i16.grid(row=i,column=16)
            self.en_i17 = Entry(self.fr13,width=4)
            self.en_i17.grid(row=i,column=17)
            self.en_i18 = Entry(self.fr13,width=4)
            self.en_i18.grid(row=i,column=18)
            self.en_i19 = Entry(self.fr13,width=4)
            self.en_i19.grid(row=i,column=19)
            self.en_i20 = Entry(self.fr13,width=4)
            self.en_i20.grid(row=i,column=2)
            self.en.append([self.en_i01,self.en_i02,self.en_i03,self.en_i04,
                            self.en_i05,self.en_i06,self.en_i07,self.en_i08,
                            self.en_i09,self.en_i10,self.en_i11,self.en_i12,
                            self.en_i13,self.en_i14,self.en_i15,self.en_i16,
                            self.en_i17,self.en_i18,self.en_i19,self.en_i20])
        self.root.mainloop()

if __name__ == '__main__':
    entrys_mit_scrollbar()


Ich hoffe, meine Beschreibung ist halbwegs brauchbar.

Stephan
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Beitragvon mawe » Samstag 15. Januar 2005, 20:44

Hi Stephan!

Soweit ich weiß, gibt es kein Tabellen-Widget für Tkinter. Ich hab mir mal so etwas selbst gestrickt, allerdings nur mit 2 Spalten. Hab einfach die Entries auf ein Canvas gepackt (wollte erst ein Frame nehmen, aber das kann man ja nicht scrollen). Vielleicht kannst Du's auch so machen?

Gruß, mawe
Benutzeravatar
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Beitragvon Dookie » Samstag 15. Januar 2005, 21:14

Hi Stephan,

da würd ich mir mal PMW anschauen, da gibts auch ein ScrolledFrame.
Warum packst du die Spalten nicht auch in eine Schleife?


Gruß

Dookie

Code: Alles auswählen

#!/usr/bin/env python
import this
Benutzeravatar
Mawilo
User
Beiträge: 446
Registriert: Sonntag 22. Februar 2004, 10:58
Wohnort: Sachsen
Kontaktdaten:

Beitragvon Mawilo » Samstag 15. Januar 2005, 23:28

Hi,

ich hab es mal zusammengefasst. Nur das Label am Anfang ist jetzt verschwunden :oops:

Code: Alles auswählen

#!/usr/bin/env python


from Tkinter import *

class entrys_mit_scrollbar:
    def __init__(self):
        self.root = Tk()
        self.fr13 = Frame(self.root)
        self.fr13.pack()
        self.en = []
        tage = 10
        werte = 20
        for i in xrange(tage):
            self.lbtag01 = Label(self.fr13,text='%s'%(i+1),width=2)
            self.lbtag01.grid(row=i,column=0)
            self.en.append([self.lbtag01])
            for w in xrange(werte):
                self.en_i01 = Entry(self.fr13,width=4)
                self.en_i01.grid(row=i,column=w)

            self.en.append([self.en_i01])
        self.root.mainloop()

if __name__ == '__main__':
    entrys_mit_scrollbar()


@ mawe: Ist das mit einem Canvas nicht sehr kompliziert? Ich dachte, da muss immer genau die Position jedes Entrys angegeben werden.

Stephan
Benutzeravatar
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Beitragvon Dookie » Sonntag 16. Januar 2005, 00:18

Hi Stephan,

Code: Alles auswählen

#!/usr/bin/env python


from Tkinter import *

class entrys_mit_scrollbar:
    def __init__(self):
        self.root = Tk()
        self.fr13 = Frame(self.root)
        self.fr13.pack()
        self.en = []
        tage = 10
        werte = 20
        for i in xrange(tage):
            label = Label(self.fr13,text='%s'%(i+1),width=2)
            label.grid(row=i,column=0)
            self.en.append([label)
            for w in xrange(werte):
                entry = Entry(self.fr13,width=4)
                entry.grid(row=i,column=w+1) # wichtig column=w+1 !
                self.en[i].append(entry)
        self.root.mainloop()

if __name__ == '__main__':
    entrys_mit_scrollbar()

so jetzt ist self.en eine 2d-Liste

Gruß

Dookie

Code: Alles auswählen

#!/usr/bin/env python
import this
Benutzeravatar
Mawilo
User
Beiträge: 446
Registriert: Sonntag 22. Februar 2004, 10:58
Wohnort: Sachsen
Kontaktdaten:

Beitragvon Mawilo » Sonntag 16. Januar 2005, 00:31

Hi Dookie,

vielen Dank. Ich habe mir erst mal Pmw installiert. Mal sehen, was das so hergibt.
Die Idee mit dem Canvas werde ich auch einmal testen.

Stephan
Benutzeravatar
Mawilo
User
Beiträge: 446
Registriert: Sonntag 22. Februar 2004, 10:58
Wohnort: Sachsen
Kontaktdaten:

Beitragvon Mawilo » Montag 17. Januar 2005, 18:58

Hallo,

irgendwie stehe ich auf dem Schlauch. Wie kann ich auf die erstellten Entrys zugreifen? Normalerweise geht das mit entry.insert('end','bla') oder mit entry.get() usw. Welche Bezeichnung muss ich eingeben, wenn ich z.B. das 4. Entry in der 5. Reihe ausgeben bzw. dort hineinschreiben möchte?

Stephan
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Beitragvon mawe » Montag 17. Januar 2005, 19:41

Hi!

Meinst Du bei Dookies Beispiel? (Hab's etwas geändert)

Code: Alles auswählen

!/usr/bin/env python

from Tkinter import *

class entrys_mit_scrollbar(Frame):
    def __init__(self):
        Frame.__init__(self)
        self.en = []
        tage = 10
        werte = 20
        for i in xrange(tage):
            label = Label(self,text='%s'%(i+1),width=2)
            label.grid(row=i,column=0)
            self.en.append([label])
            for w in xrange(werte):
                entry = Entry(self,width=4)
                entry.grid(row=i,column=w+1) # wichtig column=w+1 !
                self.en[i].append(entry)

if __name__ == '__main__':
    root = Tk()
    e = entrys_mit_scrollbar()
    e.pack()
    e.en[4][4].insert(END,"hello")
    root.mainloop()


Gruß, mawe
Benutzeravatar
Mawilo
User
Beiträge: 446
Registriert: Sonntag 22. Februar 2004, 10:58
Wohnort: Sachsen
Kontaktdaten:

Beitragvon Mawilo » Montag 17. Januar 2005, 19:58

Hi,

ja, ich meine das Beispiel von Dookie. Bei Deiner Version wird in ein Entry was zugefügt. Wie kann ich die Eingabe auslesen?
Mit e.en[4][4].get() bekomme ich ne Fehlermeldung.

Stephan
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Beitragvon mawe » Montag 17. Januar 2005, 20:02

Hi Stephan!

Bei mir funktionierts. Was bekommst denn für eine Fehlermeldung? invalid syntax?

Gruß, mawe
Benutzeravatar
Mawilo
User
Beiträge: 446
Registriert: Sonntag 22. Februar 2004, 10:58
Wohnort: Sachsen
Kontaktdaten:

Beitragvon Mawilo » Montag 17. Januar 2005, 20:18

Hi mawe,

ich habe die Abfrage an der falschen Stelle eingebaut.

Die Fehlermeldung:
TclError: invalid command name ".84046432.84082976"

Viele Grüße
Stephan
Benutzeravatar
Mawilo
User
Beiträge: 446
Registriert: Sonntag 22. Februar 2004, 10:58
Wohnort: Sachsen
Kontaktdaten:

Beitragvon Mawilo » Donnerstag 20. Januar 2005, 16:21

So, hier mal ne Version, die mit Pmw funktioniert :D :D :D
(Modul Pmw muss vorhanden sein)

Code: Alles auswählen

from Tkinter import *
from Canvas import *
root = Tk()
import Pmw
Pmw.initialise(root)

sf = Pmw.ScrolledFrame(root,labelpos = 'n',
                        label_text = 'ScrolledFrame',
                        usehullsize = 1,
                        hull_width = 500,
                        hull_height = 220)
sf.pack()

en = []
for i in xrange(1,31,1):
    for w in xrange(1,20,1):
        entry = Pmw.EntryField(sf.interior(),
                                entry_width=4,
                                validate={'validator':'numeric',
                                    'max':'9999'})
        entry.grid(row=i,column=w)
        en.append(entry)
                   
root.mainloop()


Vieleicht hilft das mal jemanden.

Viele Grüße

Stephan

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder