Mein System ist Rasbpi mit einem touchscreen ohne Tastatur in der Endanwendung.
Ich habe ein Fenster mit einigen Labels zu programmieren. Um nicht all zu viel code tippen zu müssen, habe ich die Labels in einer Schleife generiert. Dies funktioniert auch soweit. Nur die bindings der Label ,genau gesagt die bindings Textvariablen der Labels funktionieren nicht indiziert.
Ich habe die bindings einzeln, also ohne Index programmiert. Funktioniert so wie es ist wunderbar.
Nur habe ich vor ein weiteres Fenster zu generieren, das wie eine Tabelle sehr viele Labels erhalten soll. Ein Index wäre hier echt super.
Code: Alles auswählen
class Win_zsu: # Zeitschaltuhrfenster
zsu_label=[tk.Label()]*18
zsu_text_var=[tk.StringVar()]*6
aktiv=0
laufzeit=0
laufzeit_ziel=0
pausezeit_ziel=0
wdh=0
status=0
def __init__(self):
#self.zsu_text_var[2].set("0")
#print(self.zsu_text_var[2])
pass
def generate(self):
try:
self.win_zsu.lift()
self.win_zsu.focus()
# print(self.win_zsu.state())
except:
#(labelindex,Anzeigetext)
zsu_info=[(0,"aktiv?:",""),(1,"aktuell:","min"),(2,"Laufzeit:","min"),(3,"Pausezeit:","min"),
(4,"wiederholen?:",""),(5,"Status:","")]
self.win_zsu=tk.Toplevel()
self.win_zsu.title("Schaltuhr")
self.akt_ein = tk.Button(self.win_zsu,text = "ja",command = zsu_akt_ein,font = ("Helvettika",sg))
self.akt_ein.grid(column = 2, row = 0)
self.akt_aus = tk.Button(self.win_zsu,text = "nein",command = zsu_akt_aus,font = ("Helvettika",sg))
self.akt_aus.grid(column = 3, row = 0)
cfg_datei = open ('schaltuhrconfig.txt','r')
for labelindex,Anzeigetext,einh in zsu_info:
self.zsu_text_var[labelindex] = tk.StringVar ()
self.zsu_text_var[labelindex].set (cfg_datei.readline().rstrip(' \r\n'))
self.zsu_label[labelindex] = (tk.Label(self.win_zsu,text = Anzeigetext,font = ("Helvettika",sg)))
self.zsu_label[labelindex].grid(column = 0,row = labelindex,sticky = tk.W)
self.zsu_label[labelindex+6] = (tk.Label(self.win_zsu,textvariable = self.zsu_text_var[labelindex],font=("Helvettika",sg)))
self.zsu_label[labelindex+6].grid(column = 1,row = labelindex,sticky = tk.W)
#self.zsu_label[labelindex+6].bind("<Button-1>",lambda event:eingabe_callback(labelindex+3))
self.zsu_label[labelindex+12] = tk.Label(self.win_zsu,text = einh,font = ("Helvettika",sg))
self.zsu_label[labelindex+12].grid(column=2,row = labelindex,sticky = tk.W)
cfg_datei.close()
self.laufzeit_ziel=int(self.zsu_text_var[2].get())
self.pausezeit_ziel=int(self.zsu_text_var[3].get())
if self.zsu_text_var[4].get() == 'ja':
self.wdh = 1
#self.zsu_text_var[5].set('ein')
#self.status = 1
# self.zsu_text_var[2].set(str(self.laufzeit_ziel))
# self.zsu_text_var[3].set(str(self.pausezeit_ziel))
self.zsu_label[2].bind("<Button-1>",lambda event:eing_feld.generate(self.zsu_text_var[2],':'))
self.zsu_label[3].bind("<Button-1>",lambda event:eing_feld.generate(self.zsu_text_var[3],':'))
self.zsu_label[8].bind("<Button-1>",lambda event:eing_feld.generate(self.zsu_text_var[2],':'))
self.zsu_label[9].bind("<Button-1>",lambda event:eing_feld.generate(self.zsu_text_var[3],':'))
self.wdh_ein = tk.Button(self.win_zsu,text = "ja",command = zsu_wdh_ein,font = ("Helvettika",sg))
self.wdh_ein.grid(column = 2, row = 4)
self.wdh_aus = tk.Button(self.win_zsu,text = "nein",command = zsu_wdh_aus,font = ("Helvettika",sg))
self.wdh_aus.grid(column = 3, row = 4)
self.btn = tk.Button(self.win_zsu,text = "schlie�en",command = self.ok ,font = ("Helvettika",sg))
self.btn.grid(columnspan=4,column = 0, row = 6,sticky = tk.W+tk.E)