Как отобразить следующее изображение и предыдущее изображение при нажатии клавиши со стрелкой вправо или влево?Я сделал это в простом примере, когда я не определяю класс Example
, но потерпел неудачу, когда я хочу сделать это в приведенном ниже примере кода.Я определил два статических метода внутри класса Example
, чтобы связать левую и правую стрелки с графическим интерфейсом.Это хорошо работает при печати события, но я не знаю, как обновить параметр image
метки на configure(image = next_photo)
и configure(image = previous_photo)
.Вот часть моего кода:
current = 0
class Example(tk.Frame):
def __init__(self, master):
tk.Frame.__init__(self, master)
self.master.bind('<Left>', self.left_key)
self.master.bind('<Right>', self.right_key)
image = Image.open(image_list[0])
image = image.resize((800, 600),Image.ANTIALIAS)
photo = ImageTk.PhotoImage(image)
self.logo = tk.Label(self, text="Logo", background="orange")
self.logo2 = tk.Label(self, image = photo)
############################################# ScrolledText ##########################################
self.edit_space = tkst.ScrolledText(
master = self,
wrap = 'word', # wrap text at full words only
width = 50, # characters
height = 10, # text lines
bg='beige' # background color of edit area
)
self.other1 = tk.Label(self, background="purple")
self.other2 = tk.Label(self, background="yellow")
self.other3 = tk.Label(self, background="pink")
self.other4 = tk.Label(self, background="gray")
self.main = tk.Frame(self, background="blue")
self.logo.grid(row=0, column=0, rowspan=1, sticky="nsew")
self.logo2.grid(row=1, column=0, rowspan=1, sticky="nsew")
self.other1.grid(row=0, column=1, sticky="nsew")
self.other2.grid(row=0, column=2, sticky="nsew")
self.other3.grid(row=1, column=1, sticky="nsew")
self.other4.grid(row=1, column=2, sticky="nsew")
self.edit_space.grid(row=2, column=0, sticky="nsew")
self.main.grid(row=2, column=2, columnspan=2, rowspan=6)
for row in range(8):
self.grid_rowconfigure(row, weight=1)
for col in range(3):
self.grid_columnconfigure(col, weight=1)
@staticmethod
def left_key(event):
print(str(event) + " key pressed")
global current, image_list
if not (0 <= current + 1 < len(image_list)):
print("This is the first image")
return
current += 1
image = Image.open(image_list[current])
image = image.resize((800, 600),Image.ANTIALIAS)
photo = ImageTk.PhotoImage(image)
# self.logo2 = tk.Label(self, image = photo)
#self.logo2.configure(image = photo)
@staticmethod
def right_key(event):
print(str(event) + " key pressed")
global current, image_list
if not (0 <= current - 1 < len(image_list)):
print("This is the last image")
return
current -= 1
image = Image.open(image_list[current])
image = image.resize((800, 600),Image.ANTIALIAS)
photo = ImageTk.PhotoImage(image)
# self.logo2 = tk.Label(self, image = photo)
#self.logo2.configure(image = photo)
if __name__ == "__main__":
root = tk.Tk()
Example(root).pack(fill="both", expand=True)
root.geometry("800x400")
root.mainloop()