Я хотел бы добавить новую опцию в свой унаследованный класс tkinter Frame. Этот параметр будет photos
и должен быть списком URL-адресов. Проблема в том, что когда я передаю эту опцию в мой унаследованный класс tkinter Frame, Python поднимает ошибку, говоря, что этот параметр недоступен для этого виджета.Как добавить новую опцию в унаследованный класс кадров tkinter?
Вызов заключается в следующем:
self.photos = [url1, url2, url3]
self.slideshow_photos = SlideShow(self, width=320, photos=self.photos)
И мой класс выглядит следующим образом:
class SlideShow(tkinter.Frame):
def __init__(self, master=None, *args, **kwargs):
tkinter.Frame.__init__(self, master, *args, **kwargs)
self.master = master
self.grid()
self.photos = []
for photo in kwargs.get('photos', []):
self.photos.append(ImageTk.PhotoImage(Image.open(io.BytesIO(urlopen(photo).read()))))
self.label_photo = tkinter.Label(self, image=self.photos[0])
self.label_photo.photo = self.photos[0]
self.label_photo.grid(column=1, row=1)
Моя первая идея состояла в том, чтобы не пройти *args, **kwargs
к Frame.__init__
, но потом, когда я прохожу другой кадр варианты, такие как width
, конечно, эта опция больше не учитывается.
Моя вторая идея состояла в том, чтобы получить опцию в **kwargs
и удалить ее перед вызовом Frame.__init__
, но я не вижу в этом лучшего способа сделать это.
Любые идеи?