Несколько изображений на холсте Tkinter - PullRequest
0 голосов
/ 18 мая 2018

У меня проблема с этим кодом. На самом деле, 1. Загрузите изображения с помощью URL 2. Сохраните эти изображения на сервере 3. Показать их на холсте

Проблема, с которой я столкнулся, это то, что она показывает только последнее изображение (в данном случае img2 из url2) из ​​списка, а не первое, хотя я вижу, что в Canvas было добавлено пустое место для первого изображения .

Кто-нибудь знает, что мне здесь не хватает. Я ценю вашу помощь.

Существуют ли другие способы получения изображений и их отображения на холсте, не сохраняя их в локальном режиме.


class open_child_window:
    def <strong>init</strong>(self, master):
        self.master = master
        master.title("Img")</p>

    url1 ="http:img1"
    url2 ="http:img2"


    vscrollbar = Tk.Scrollbar(self.master,orient=VERTICAL)
    hscrollbar=Tk.Scrollbar(self.master,orient=HORIZONTAL)

    self.canvas= Tk.Canvas(self.master,background = "White",yscrollcommand=vscrollbar.set,xscrollcommand=hscrollbar.set)
    self.frame = Tk.Frame(self.canvas)
    vscrollbar.config(command=self.canvas.yview)
    vscrollbar.pack(side=Tk.RIGHT, fill=Tk.Y)

    hscrollbar.pack(side=Tk.BOTTOM,fill=Tk.X)
    hscrollbar.config(command=self.canvas.xview)

    self.canvas.create_window(0,0,window=self.frame, anchor='nw')            

    self.list_images = []


    contents = urllib.request.urlopen(ur1l)

    plt.imshow(plt.imread(contents))
    file_name = "./img1.png"
    plt.savefig(file_name, format='png', dpi=180)

    gif1 = PhotoImage(file = file_name)
    self.canvas.image_names = gif1
    self.canvas.create_image(50, 10, image = gif1, anchor = NW)


    contents = urllib.request.urlopen(url2)

    plt.imshow(plt.imread(contents))
    file_name = "./img2.png"
    plt.savefig(file_name, format='png', dpi=180)

    gif2 = PhotoImage(file = file_name)
    self.canvas.image_names = gif2
    self.canvas.create_image(600, 700, image = gif2, anchor = NW)


    self.master.update()  
    self.canvas.config(scrollregion=self.canvas.bbox("all"))
    self.canvas.pack(side="top",fill='both',expand=True)
    self.frame.pack()

1 Ответ

0 голосов
/ 18 мая 2018

Мне удалось решить мою проблему.

в случае, если кто-то еще ищет решение.

Добавили self перед gif1 и gif2, как self.gif1 и self.gif2.

...