Ich versuche ein Programm in Python 3.3.0 zu erstellen, um mit Tkinter zu trainieren, aber wenn ich versuche, Bilder auf Schaltflächen zu setzen, die in einem erstellt werden Schleife, ich bekomme ein paar Tasten, die nicht funktionieren (ich kann nicht auf sie klicken und sie haben keine Bilder), und das letzte funktioniert und mit dem Bild darauf. Hier ist der Code:Ich sehe keine Bilder auf meinen Tasten, wenn ich sie mit einer Schleife erstelle
elenco = [immagine1, immagine2, immagine3, immagine 4]
class secondWindow:
def __init__(self):
self.secondWindow = Tk()
self.secondWindow.geometry ('500x650+400+30')
class mainWindow:
def __init__(self):
self.mainWindow = Tk()
self.mainWindow.geometry ('1100x650+100+10')
self.mainWindow.title('MainWindow')
def Buttons(self, stringa):
i = 0
for _ in elenco:
if stringa in _.lower():
j = int(i/10)
self.IM = PIL.Image.open (_ + ".jpg")
self.II = PIL.ImageTk.PhotoImage (self.IM)
self.button = Button(text = _, compound = 'top', image = self.II, command = secondWindow).grid(row = j, column = i-j*10)
i += 1
def mainEnter (self):
testoEntry = StringVar()
self.mainEntry = Entry(self.mainWindow, textvariable = testoEntry).place (x = 900, y = 20)
def search():
testoEntry2 = testoEntry.get()
if testoEntry2 == "":
pass
else:
testoEntry2 = testoEntry2.lower()
mainWindow.Buttons(self, testoEntry2)
self.button4Entry = Button (self.mainWindow, text = 'search', command = search).place (x = 1050, y = 17)
MW = mainWindow()
MW.mainEnter()
mainloop()
Wenn ich versuche Tasten in einer Schleife zu erstellen, ohne Bilder, sie funktionieren:
def Buttons(self, stringa):
i = 0
for _ in elenco:
if stringa in _.lower():
j = int(i/10)
self.button = Button(text = _, command = secondWindow).grid(row = j, column = i-j*10)
i += 1
Und wenn ich versuche, einen Knopf mit einem Bild zu erstellen, aber nicht in einer Schleife funktioniert es auch:
im = PIL.Image.open("immagine1.jpg")
ge = PIL.ImageTk.PhotoImage (im)
butt = Button(text = 'immagine', compound = 'top', image = ge, command = secondWindow).grid(row = 0, column = 0)
Sie sind nur einen Verweis auf das * * letzte Bild, und die letzte Taste halten. Verwenden Sie stattdessen Listen ('self.buttons.append (...)'). – jonrsharpe
@jonrsharpe Ich habe es mit Wörterbüchern versucht und es funktioniert nicht, ich werde es mit einer Liste versuchen ... – vladi
Zusätzlich speichern Sie das Ergebnis von '.grid', was eigentlich' None' ist, nicht das Knopf selbst. – jonrsharpe