for-Schleifen bei Entry und Werte daraus speichern

Fragen zu Tkinter.
Antworten
Pascal
User
Beiträge: 271
Registriert: Samstag 4. April 2009, 22:18

Hallo,

wie kann ich folgendes in Tkinter umsetzen?

Code: Alles auswählen

liste=[]
for s in range(1,6):
     print s , ': ',
     liste.append(raw_input())
Gibt es die Möglichkeit Variablennamen aus listen zu vergeben? hoffe der Satz war verständlich

so würde das ganze als Ansatz in Tkinter aussehen:

Code: Alles auswählen

import Tkinter as tk

win=tk.Tk()
liste=[]
for s in range(1,6):
     tk.Label(win, text=(str(s)+': ')).pack()
     tk.Entry(win).pack()
...
BlackJack

@Pascal: Du musst Dir die `Entry`-Exemplare halt irgendwo merken, um später den Text von ihnen Abfragen zu können. Du könntest sie zum Beispiel in eine Liste stecken.
Benutzeravatar
kaytec
User
Beiträge: 608
Registriert: Dienstag 13. Februar 2007, 21:57

Hallo Pascal !

Code: Alles auswählen

#! /usr/bin/python
# -*- coding: utf-8

import Tkinter as tk


class Tk_Gui(object):
   
    def __init__(self, root):
        self.labels = ["1", "2", "3"]
        self.entrys = (0, 1, 2)
        self.buttons= (("Get Entry", self.get_entrys),
                       ("Change Text", self.change_text),
                       ("Disable Buttons", self.disable_buttons))
        self.entry_control = list()
        self.label_control = list()
        self.button_control = list()

        for column, text in enumerate(self.labels):
            label = tk.Label(root, text=text, width=10)
            label.grid(column=column, row=0)
            self.label_control.append(label)
        for column in self.entrys:
            entry = tk.Entry(root, width=10)
            entry.grid(column=column, row=1)
            self.entry_control.append(entry)
        for column, (text, command) in enumerate(self.buttons):
            button = tk.Button(root, text=text, width=10, command=command)
            button.grid(column=column, row=2)
            self.button_control.append(button)
    
    def get_entrys(self):
        container = list()
        for entry in self.entry_control:
            container.append(entry.get())
        print container
            
        
    def change_text(self):
        self.labels.reverse()
        for label, text in zip(self.label_control, self.labels):
            label.config(text=text)
        
        
    def disable_buttons(self):
        for button in self.button_control:
            button.config(state = "disabled")
    
def main():
    root = tk.Tk()
    app = Tk_Gui(root)
    root.mainloop()
    
if __name__ =="__main__":
    main()
Gruß Frank
Pascal
User
Beiträge: 271
Registriert: Samstag 4. April 2009, 22:18

Danke

Allerdings brauch ich eig. nur diesen Teil:

Code: Alles auswählen

for column in self.entrys: 
            entry = tk.Entry(root, width=10) 
            entry.grid(column=column, row=1) 
            self.entry_control.append(entry) 
Antworten