ich habe mir einen kleinen Image-Viewer erstellt, der aus einer Liste ein paar Bilder anzeigt. Funktioniert auch alles soweit. Aber nun wollte ich erreichen, dass, wenn alle Bilder durch sind, der "forward"-Button deaktiviert wird, damit es zu keiner Fehlermeldung kommt. Klar gibt es auch andere Möglichkeiten (Zähler zurücksetzen, Messagebox usw.), aber mich würde halt mal interessieren, warum sich der Button bei mir nicht deaktivieren lässt.
Hier mal der Code:
Code: Alles auswählen
import tkinter as tk
from PIL import ImageTk
from PIL import Image
class Programm:
def __init__(self):
# das Hauptfenster
self.hauptfenster = tk.Tk()
#Inhalte
self.number = 0
self.my_img1 = ImageTk.PhotoImage(Image.open("/home//Bilder/icon.png"))
self.my_img2 = ImageTk.PhotoImage(Image.open("/home//Bilder/icon2.png"))
self.my_img3 = ImageTk.PhotoImage(Image.open("/home//Bilder/icon3.png"))
self.my_img4 = ImageTk.PhotoImage(Image.open("/home//Bilder/icon4.png"))
self.my_img5 = ImageTk.PhotoImage(Image.open("/home//Bilder/icon5.png"))
self.bilderliste =[self.my_img1,self.my_img2,self.my_img3,self.my_img4,self.my_img5]
self.my_label = tk.Label(self.hauptfenster,image=self.bilderliste[self.number],width=1600,height=980)
self.my_label.grid(row=0,column=0,columnspan=3)
self.button_back = tk.Button(self.hauptfenster, text="<<", command=lambda: back2())
self.button_quit = tk.Button(self.hauptfenster, text="Exit",padx=40,pady=20, command=self.hauptfenster.destroy)
self.button_einrichten()
self.button_back.grid(row=1, column=0)
self.button_quit.grid(row=1,column=1)
def button_einrichten(self):
if self.number == 2:
self.button_forward(self.hauptfenster,text=">>", command=lambda: self.forward(),state= DISABLED)
self.button_forward.grid(row=1,column=2)
else:
self.button_forward = tk.Button(self.hauptfenster, text=">>", command=lambda: self.forward())
self.button_forward.grid(row=1,column=2)
def forward(self):
self.number +=1
self.my_label.grid_forget()
self.my_label=tk.Label(image=self.bilderliste[self.number],width=1600,height=900)
self.my_label.grid(row=0,column=0,columnspan=3)
def main():
programm = Programm()
programm.hauptfenster.mainloop()
if __name__ == '__main__':
main()